【发布时间】:2015-07-14 06:07:57
【问题描述】:
我在一个表单上有两个经过交叉验证的字段。最初用户会看到:
<p:inputText size="5"
value="#{bean.maximum_hole_diameter}">
<f:validator validatorId="doubleNotLessThanSecondDouble" />
<f:attribute name="secondDouble"
value="#{bean.minimum_hole_diameter}" />
<p:ajax event="change" update="@this" />
</p:inputText>
<p:inputText size="5"
value="#{bean.minimum_hole_diameter}">
<f:validator validatorId="doubleNotGreaterThanSecondDouble" />
<f:attribute name="secondDouble"
value="#{bean.maximum_hole_diameter}" />
<p:ajax event="change" update="@this" />
</p:inputText>
如果用户首先为最大值输入一个正值,然后为最小值输入一个较小的值,则一切都按预期工作。
如果他们首先输入被标记为无效的最小值:
到目前为止一切顺利 - 2 大于 0.0。直观地说,用户会输入一个大于最小值的最大孔径。但是表格卡住了。最小值仍然无效,因为从技术上讲,在模型中它仍然是 0.0。 Ajax 从未将值 2 存储在模型中,但浏览器仍然显示值 2。如何让 2 重新验证并存储在我的 bean 中??
我可以执行 update="@form" 将 2 值清零,但这会让用户感到沮丧。如果用户重新键入 2,则不会提交表单,因为它没有“更改”。用户必须更改为另一个数字,然后返回 2。执行“onblur”也有其问题。
当用户输入 3 时,如何让值 2 重新提交并重新验证?
【问题讨论】:
-
由于 OP 正在执行 ajax 验证,这里的问题稍微复杂一些;还需要对该字段进行 ajax 处理
标签: ajax validation jsf