我为此问题进行了大量搜索,但没有解释说明我在搜索什么
我有一个像我最后发布的 class 。简而言之:PatternValidation的行为不同于手动验证。
例如:
AjaxEditableLabel有一个标签和一个编辑器,可切换以进行编辑(聚焦)以及取消或提交
如果我输入的内容对Patternvalidator无效,则该输入被标记为可以纠正它。如果再按Esc键,则将编辑器设置为不可见,并且标签再次为空。但是,如果我再次编辑标签,则该值仍在编辑器中,这是错误的。
如果我输入的内容通过了Patternvalidator,但在onSubmit方法内部无效,则该输入也被标记为一个,您也可以对其进行更正。但是,如果您不按Esc键,则将键入的值写在标签中,而不应该这样。我真的需要在onSubmit内部进行进一步的验证。
似乎在Validation部分之间,onSubmit()方法将值从Editor拖到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);
}
}
}
最佳答案
显然,这是AjaxEditableLabel中的错误,它将在下一个Wicket版本中修复。
现在,您可以覆盖onCancel():
protected void onCancel(final AjaxRequestTarget target)
{
super.onCancel();
getEditor().clearInput();
}