【发布时间】:2012-07-31 22:05:13
【问题描述】:
我在 PrimeFaces 中有一个可编辑的数据表,并且正在使用 Hibernate Validator 进行 bean 验证。这适用于 <p:inputText /> 元素。现在我想对可编辑的数据表进行验证。
这是正在发生的事情:
如果我输入有效值,页面会按预期更新
如果我输入无效值,当我点击小“保存”复选标记时没有任何反应 - 单元格保持可编辑状态,不尝试数据库写入,不显示错误消息。
页面上有<h:messages />标签,为什么不显示错误信息?该组件似乎意识到存在问题,因为该行仍处于可编辑状态。
编辑:我启用了日志记录并看到了这个:
21:20:43,874 FINE [javax.enterprise.resource.webcontainer.jsf.context] (http-localhost-127.0.0.1-8080-2) Adding Message[sourceId=demoTable:j_idt11:2:j_idt15,summary=Testing Hibernate Validator Error Message)
所以看起来上下文正在正确更新。看来我需要做点什么来触发它呈现的消息。
【问题讨论】:
-
在没有任何示例代码的情况下,这听起来很像 Hibernate Exception。 JSF 将直接跳到渲染响应部分,这解释了为什么您没有得到任何操作并且页面导航没有变化。 No Validation or Conversion 错误也解释了您的消息标签缺少 FacesMessage。设置断点并遍历它...
-
我启用了日志记录并看到了这个:21:20:43,874 FINE [javax.enterprise.resource.webcontainer.jsf.context] (http-localhost-127.0.0.1-8080-2) 添加消息[ sourceId=demoTable:j_idt11:2:j_idt15,summary=Testing Hibernate Validator Error Message) 所以看起来上下文正在正确更新。看来我需要做点什么来触发它呈现的消息。
-
我还认识到 Primefaces 的单元格编辑会在失败时吞下消息,这非常烦人,因为定义的更新组件仅在成功时更新。应在 primefaces 跟踪器中提交问题。它甚至会吞下诸如简单的
required之类的消息。
标签: jsf primefaces bean-validation hibernate-validator