加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如果字段失败验证条件,如何强制触发Wicket“onchange”AJAX事件

发布时间:2020-12-16 02:53:54 所属栏目:百科 来源:网络整理
导读:我想到的具体情况如下:AjaxFormComponentUpdatingBehavior(“onchange”)被添加到表单中的TextField.该行为验证某些条件的文本(模型对象或表单组件模型,无关紧要),根据它可以显示消息(或隐藏它,如果已经显示). 问题是,还有一些验证器添加到TextField.其中一
我想到的具体情况如下:AjaxFormComponentUpdatingBehavior(“onchange”)被添加到表单中的TextField.该行为验证某些条件的文本(模型对象或表单组件模型,无关紧要),根据它可以显示消息(或隐藏它,如果已经显示).

问题是,还有一些验证器添加到TextField.其中一个可能的(也可能是)场景包括用户输入,首先是一个导致消息由AJAX请求显示的值.然后,如果他/她键入了未通过验证的值,则消息应该消失,但事实并非消失.

显然,根本没有调用AJAX行为的onUpdate()方法,或者我试图插入对未经验证的条目的检查失败(我试图测试空值和空字符串,否则可用;我不知道Wicket的验证器在数据无效时对模型做了什么.

我想知道是否有人真正了解验证器(或实际上是AJAX)对问题的位置有任何想法.

我可以发布编辑和发布代码,如果有人告诉我这不是绑定验证器和AJAX的一般问题,但很可能是一个编程错误.我仍然相信前者,因此我将避免发布代码部分,以便继续讨论API /理论框架.

谢谢.

解决方法

使用AjaxFormComponentUpdatingBehavior时,如果任何IValidator验证失败,将调用 onError()而不是 onUpdate().Wicket将有效防止无效的用户输入到达组件中的IModel,因此组件的ModelObject根本不会更改.无效输入可能会通过 getInput()/ getConvertedInput()保持可用(不确定它是否会在AJAX场景中,它确定是传统的表单提交).

但是,请考虑使用此机制时不执行IFormValidators.如果您有任何内容,您可能有兴趣覆盖getUpdateModel(),以便AjaxFormComponentUpdatingBehavior不会将可能无效的用户输入带入您的IModel,并在您确定用户输入有效时手动设置modelobject.

关于您的具体情况,您可以在onError()中执行所有必需的逻辑(或依赖于将从其他地方获取数据的模型),并且只需将需要刷新的组件添加到AjaxRequestTarget.这可能是您的方案中缺少的内容.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读