我搜索了很多这个问题,但没有解释说明我在寻找什么
我有一个像我最后发布的课程。非常简短:PatternValidation的行为与手动验证不同。
例如: AjaxEditableLabel有一个Label和一个编辑器,可以切换进行编辑(聚焦)和取消或提交
如果我输入的Patternvalidator无效,则输入标记为可以更正。如果然后按Esc,编辑器将设置为不可见,标签再次为空。但是如果我再次编辑标签,那么值仍然在编辑器中,这是错误的。
如果我做了一个传递了Patternvalidator的输入,但在onSubmit方法中无效,那么输入也被标记为你也可以更正它。但是,如果您按Esc键入的值将写入标签中,而这不应该是。我真的需要在onSubmit中进一步验证。
似乎是Validation部分和onSubmit()方法之间的东西将编辑器中的值拉到Label。我脑子里有什么完全错的吗?
一些示例代码:
public class MyEditableLabel extends AjaxEditableLabel<String>{
public MyEditableLabel(String id, IModel<String> model) {
super(id, model);
PatternValidator patternValidator = new PatternValidator(Pattern.compile(
"(^([0-9]|[0-1][0-9]|2[0-3]):([0-5][0-9])$)|((\\d{1,2})(,|\\.)(\\d\\d))"));
this.add(patternValidator);
}
@Override
protected void onSubmit(AjaxRequestTarget target) {
// further validation
if( editorValue.equals("00:00") ) { //just for example
onError(target);
} else {
super.onSubmit(target);
}
}
}
答案 0 :(得分:4)
显然这是AjaxEditableLabel中的一个错误,它将在下一个Wicket版本中修复。
现在你可以覆盖onCancel():
protected void onCancel(final AjaxRequestTarget target)
{
super.onCancel();
getEditor().clearInput();
}