我编写了一个自定义验证器来验证所有表单字段。我正在使用Incefaces 3.2和JSF 2.0。我注意到整数类型的UIInput有多个问题。如果我没有在表单中输入任何数据并点击提交,我可以使用myUIInput.getValue()检查自定义验证器中的字段值并启动所需的验证。UIInput的isLocalValueSet总是在自定义验证器中返回true
当我在字段中输入一些值并提交时,我在我的自定义验证器中使用getSubmittedValue()来验证它。到现在为止还挺好。当我从UI中删除该字段的值并将其提交后,getValue()仍然保留旧值。 isLocalValueSet()总是返回null。
我试过在第一次启动验证后重置下面的内容。它也没有帮助。
myInput.setValue(null);
myInput.setSubmittedValue(null);
myInput.setLocalValueSet(false);
如何将我的字段状态重置为初始值?如何在启动验证后正确设置isLocalValueSet()?提前致谢。
感谢BalusC。我们在我们的jsf2,Icefaces 3应用程序的某些形式上使用JSR 303 bean验证。我们遇到了控制验证顺序的问题。我想删除所有验证,但请求对象(dto)与项目的其他类紧密耦合。我们已经接近完成项目的包装了,如果没有bean验证,创建新的dto已经太迟了。所以,我写了一个自定义验证器,例如 。 –
Superman9999
2013-03-20 00:33:52
每次我提交表单时都会触发此验证器。如果未输入任何值,我的客户添加了最后一分钟的要求以显示整数字段为空白。如果验证(必需或格式)失败,它必须设置为空白。出于某种原因,getValue()和getSubmittedValue()没有正确更新整型字段。我没有字符串或日期字段的问题。作为解决方法,我在UI上使用了一个字符串,如果它是一个有效的int值,则将其更改回整数。我还没有探索添加转换器的路线。 – Superman9999 2013-03-20 00:34:20