如果字段失败验证条件,如何强制触发Wicket“onchange”AJAX事件
我想到的具体情况如下:AjaxFormComponentUpdatingBehavior(“onchange”)被添加到表单中的TextField.该行为验证某些条件的文本(模型对象或表单组件模型,无关紧要),根据它可以显示消息(或隐藏它,如果已经显示).
问题是,还有一些验证器添加到TextField.其中一个可能的(也可能是)场景包括用户输入,首先是一个导致消息由AJAX请求显示的值.然后,如果他/她键入了未通过验证的值,则消息应该消失,但事实并非消失. 显然,根本没有调用AJAX行为的onUpdate()方法,或者我试图插入对未经验证的条目的检查失败(我试图测试空值和空字符串,否则可用;我不知道Wicket的验证器在数据无效时对模型做了什么. 我想知道是否有人真正了解验证器(或实际上是AJAX)对问题的位置有任何想法. 我可以发布编辑和发布代码,如果有人告诉我这不是绑定验证器和AJAX的一般问题,但很可能是一个编程错误.我仍然相信前者,因此我将避免发布代码部分,以便继续讨论API /理论框架. 谢谢. 解决方法
使用AjaxFormComponentUpdatingBehavior时,如果任何IValidator验证失败,将调用
onError() 而不是
onUpdate() .Wicket将有效防止无效的用户输入到达组件中的IModel,因此组件的ModelObject根本不会更改.无效输入可能会通过
getInput() /
getConvertedInput() 保持可用(不确定它是否会在AJAX场景中,它确定是传统的表单提交).
但是,请考虑使用此机制时不执行IFormValidators.如果您有任何内容,您可能有兴趣覆盖 关于您的具体情况,您可以在onError()中执行所有必需的逻辑(或依赖于将从其他地方获取数据的模型),并且只需将需要刷新的组件添加到AjaxRequestTarget.这可能是您的方案中缺少的内容. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |