编程语言
首页 > 编程语言> > java-AjaxEditableLabel和Validator的行为使我感到困惑

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