我的页面上有一些需要交叉验证的字段。但我不希望此验证中显示错误<h:message>
对于这个领域。
如果我将验证器添加到任何字段,并且验证器抛出异常,错误将显示在<h:message>
对于这个领域。另一方面,如果我想禁止页面提交,我必须抛出异常。仅显示一些错误消息是不够的。
所以我在表单上创建了一些隐藏字段,并在那里附加了验证器。该验证器可以访问我想要验证的字段的 UIComponent,因此它可以验证它们。当验证器抛出异常时,错误显示在<h:message>
对于隐藏字段,我可以将其放置在任何我想要的地方。
如果我将隐藏字段放在我想要验证的字段后面,一切都会正常。 (如果我把它放在前面,隐藏字段验证会在更新我的字段的组件之前触发)。
问题是它是令人讨厌的黑客:)有更好的方法吗?
问题是它是令人讨厌的黑客:)有更好的方法吗?
不适用于特定的功能要求。确实,JSF 只允许对多个字段的交叉验证进行非常细粒度的控制。
如果我将隐藏字段放在我想要验证的字段后面,一切都会正常。 (如果我把它放在前面,隐藏字段验证会在更新我的字段的组件之前触发)。
组件在验证阶段按照组件树中出现的顺序进行处理。如果你在某个时候有一个UIInput
仍在处理中,那么您需要通过以下方式获取提交的值UIInput#getSubmittedValue()
。如果它已经被处理,那么您需要通过以下方式获取提交的(以及转换和验证的)值UIInput#getValue()
反而。
因此,如果您将隐藏字段与验证器一起放置after待验证的组件,那么你需要UIInput#getValue()
来获取价值观。如果隐藏字段被放置before待验证的组件,那么你需要UIInput#getSubmittedValue()
来获取价值观。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)