gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:12:38 38 4
gpt4 key购买 nike

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

我有一个像我最后发布的类(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/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com