java-AjaxEditableLabel和Validator的行为使我感到困惑
作者:互联网
我为此问题进行了大量搜索,但没有解释说明我在搜索什么
我有一个像我最后发布的课程.简而言之: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
one rror(target);
} else {
super.onSubmit(target);
}
}
}
解决方法:
显然,这是AjaxEditableLabel中的错误,它将在下一个Wicket版本中修复.
现在,您可以覆盖onCancel():
protected void onCancel(final AjaxRequestTarget target)
{
super.onCancel();
getEditor().clearInput();
}
标签:wicket,java 来源: https://codeday.me/bug/20191029/1958374.html