我的页面中有 h:selectOneMenu 组件。用户必须在此处选择“是”或“否”,初始值为空(标记为“未知”)。在 bean 中它是布尔值,所以 null 是可能的。如果用户选择有效值,例如“是”,点击下一步,true
将保存在 bean 中。
现在用户可以返回此页面,并选择“未知”,这是一个无效的值。当用户现在点击下一步时,会显示错误消息。没关系,但是值会更改为“是”。它是从 bean 更新的。这样它会改变用户输入的内容,这不是必需的行为。是否有可能保持用户的价值?
<h:form id="co">
<h:selectOneMenu id="isCeded"
value="#{bean.boolValue}"
required="true"
requiredMessage="#{msgs.please_select_value}">
<f:selectItem itemLabel="#{msgs.unknown}"/>
<f:selectItem itemValue="true" itemLabel="#{msgs.yes}"/>
<f:selectItem itemValue="false" itemLabel="#{msgs.no}"/>
<f:ajax execute="@this" render="isCededMsg"/>
</h:selectOneMenu>*
<h:message id="isCededMsg" for="isCeded" errorClass="invalid"/>
<h:commandButton id="submit" value="Next" action="#{bean.submit}" />
</h:form>
奇怪的是,只有当用户在 null 不是有效值的字段中输入 null 时才会发生这种行为。例如,如果用户在某些经过验证的文本字段中输入了另一个无效值(例如,20 位数字,其中只允许 10 位),则用户输入的无效值在单击“下一步”后仍然存在。只有错误消息出现。