java - AjaxEditableLabel 和 Validator 的行为让我感到困惑

标签 java wicket

我搜索了很多这个问题,但没有解释解释我在搜索什么

我有一个像我最后发布的类(class)。简而言之:PatternValidation 的行为不同于手动验证。

例如: AjaxEditableLabel 有一个 Label 和一个 Editor,它在编辑(聚焦)和 Cancel 或 Submit 之间切换

如果我执行了一个对模式 validator 无效的输入,该输入将被标记,您可以更正它。如果您随后按 Esc 键,编辑器将被设置为不可见,并且标签再次为空。但是如果我再次编辑标签,值仍然在编辑器中,这是错误的。

如果我执行的输入通过了 Patternvalidator,但在 onSubmit 方法内部无效,则输入也会被标记,您也可以更正它。但是,如果您按下 Esc 键,则键入的值将写入标签中,而这不应该如此。我真的需要在 onSubmit 中进行进一步验证。

似乎在验证部分和 onSubmit() 方法之间有某种东西将值从编辑器拉到标签。我的想法完全错误吗?

一些示例代码:

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();
}

关于java - AjaxEditableLabel 和 Validator 的行为让我感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25414636/

相关文章:

java - Guava Optional 作为可选参数的方法参数

java - 提交页面并没有更新我的模型?

java - 如何更改 Wicket 中的链接文本?

java - 如何使用 AJAX 更新 Wicket DataView?

java - 如何使用 wicket ajax 请求处理 session 超时?

java - 异常后未显示新遗物通知错误

java - 在 Android/Java 中实现类 C# 事件

java - 升级操作系统内核的方法

java - 在 appengine 中维护 Java Endpoint API 版本

java - Java中子类中过滤掉父类的记录