首页 文章

在JSF中验证后,用户输入的值将消失

提问于
浏览
3

我的页面中有h:selectOneMenu组件 . 用户必须在那里选择"Yes"或"No",初始值为空(标记为"Unknown") . 在bean中它是布尔值,因此null是可能的 . 如果用户选择有效值,例如"Yes",点击下一步, true 保存在bean中 .

现在,用户可以返回此页面,并选择“未知”,这不是有效值 . 当用户现在点击Next时,会显示错误消息 . 没关系,但是值变为“是” . 它是从bean更新的 . 这样它就会改变用户输入的内容,这不是必需的行为 . 是否有可能保持用户的 Value ?

<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个)用户输入的无效值在单击“下一步”后仍然存在 . 只有错误消息的上诉 .

1 回答

相关问题