Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 如何在执行ajax命令时处理验证错误(在p:dataTable中)_Jsf 2_Primefaces_Validation - Fatal编程技术网

Jsf 2 如何在执行ajax命令时处理验证错误(在p:dataTable中)

Jsf 2 如何在执行ajax命令时处理验证错误(在p:dataTable中),jsf-2,primefaces,validation,Jsf 2,Primefaces,Validation,我有一个,其中包含一个的我的问题是,如果用户在中输入了长度超过最大值的值,则无论是否在数据表中,无论它是否以简单形式且具有相同的长度,我都要处理该的验证错误验证如何在我的bean中处理此验证错误以执行某项业务我尝试了 FacesContext context = FacesContext.getCurrentInstance(); Iterator<FacesMessage> messages = context.getMessages(); 我还阅读了文档并且没有提供任何关于如何

我有一个
,其中包含一个

我的问题是,如果用户在

中输入了长度超过最大值的值,则无论
是否在数据表中,无论它是否以简单形式且具有相同的长度,我都要处理该
的验证错误验证如何在我的bean中处理此验证错误以执行某项业务
我尝试了

FacesContext context = FacesContext.getCurrentInstance();
Iterator<FacesMessage> messages = context.getMessages();
我还阅读了文档
并且没有提供任何关于如何使用它的新细节
但是,如果验证成功或失败,它总是返回false
我是否以错误的方式使用它,或者我缺少此函数的某些内容

根据添加到标记的
最大值和
最小值属性检查输入字段的长度,例如:

<f:validateLength maximum="5" minimum="2"/>

由于这是JSF内置的验证器之一,如果为组件或整个页面添加
p:message
h:message
标记,则会显示标准错误消息(如果愿意,可以更改默认错误消息)


对于自定义验证,您应该使用
p:inputText
validator
属性,并将其绑定到支持bean中的验证器方法。然后您可以验证任何您喜欢的东西。

实现的最佳方法是创建一个自定义验证器并从组件调用它。由于您正在从组件传递标签,因此可以在验证器中添加类似{0}xxxxxxxx的消息。这样,您就可以为不同的组件提供不同的错误消息。 您可以在属性文件中配置错误消息,并在validator类中读取


希望这会有帮助。

我知道这是一个JSF内置的验证器,但我的问题是我能处理这个验证错误吗,或者你的意思是只有自己完成的验证器可以处理如果你想用ajax操作方法处理它,那就太晚了,由于验证发生在JSF周期的早期。我想处理JSF内置验证器的验证错误,它是否可用,以及为什么会很晚,如果有ajax with event onBlur,它会向inputText发出红色指示,您应该指定要“处理”的内容。您只是想更改显示的错误消息,还是想更改验证器的工作方式。这还不清楚。我不想更改其中的任何一个。我想要的是在我的bean中指示发生了验证错误。我需要的是知道我的托管bean中是否发生了验证错误,以便我可以创建自己的业务假设我有一个表,并且在这些表中存在验证失败,尽管我有一个add按钮,该按钮将对象添加到列表中,并在前一行验证失败时更新数据表。添加按钮正常执行,就像验证没有失败一样,因此我想知道前一行验证失败,以便我可以停止添加操作button@primeFaceUser:当您使用自定义validator:(1)根据JSF LifeCycle,当validtion阶段失败时,它使用错误消息呈现响应,而不使用更新的值更新支持bean对象。因此,在支持bean中不可能知道验证失败在哪里。好的,谢谢,我理解了这个问题,但是请您阅读我的帖子,在第二个ajax请求中,使用命令按钮跳过了验证阶段。这是怎么做到的happens@primeFaceUser:但是如果您想在后台bean中知道不管失败与否,您都可以在支持bean中编写验证方法,而无需在html中提供任何验证器。因此,您的操作将调用backing方法,您可以在那里明确地执行验证
<f:validateLength maximum="5" minimum="2"/>