当前位置: 首页 > 知识库问答 >
问题:

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

范浩荡
2023-03-14

我的页面中有h: selectOneMenu组件。用户必须在那里选择“是”或“否”,初始值为null(标记为“未知”)。在bean中它是布尔值,因此可以为null。如果用户选择了有效值,例如“是”,则点击Next,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位),则单击“下一步”后,用户输入的无效值将保留。仅出现错误消息。

共有1个答案

淳于博
2023-03-14

这似乎是一个错误,看起来并没有得到修复。请参阅本问题中提到的JIRA链接:h: selectOneMenu with请选择在验证错误时显示先前的选择

问题和JIRA问题都有解决方案。您需要扩展MenuRenderer,并使用JIRA问题末尾提到的修补代码覆盖renderOption方法。

 类似资料:
  • 使用在WebSphere 8.5.5中运行的PrimeFaces 5.3 我有一个带有两个必填字段的表单,一个和一个。我在菜单中选择一个有效值(例如无状态),但将文本字段留空,导致错误。然后我更正文本字段,但用户也按下菜单上的“S”键——打算再次选择“无状态”,但结果是“选择国家”,这意味着没有选择任何内容——另一个验证错误。 当用户按下ENTER时,他们会收到另一条的错误消息,该字段本身被突出显

  • 我已经创建了一个控制台应用程序,现在开始将其转换为摇摆应用程序。我有一个问题,我搜索了很多次,但我没有找到任何答案。 我的应用程序有一个类来验证用户的输入,如果输入错误,它会向控制台发出错误消息。所以我尝试做的是,我有一个Jtextfield并验证这个输入,如果输入错误,它应该给我错误消息。 这是我的Input类,用户可以在其中编写 这是我的输出类方法 我只是想知道我可以使用输入类的验证,还是应该

  • 问题内容: 因此,我几乎搜索了单词“ string”,“ python”,“ validate”,“ user input”等等的每个排列,但是我还没有找到一种适合我的解决方案。 我的目标是提示用户是否要使用字符串“ yes”和“ no”进行另一笔交易,我认为字符串比较在Python中是一个相当简单的过程,但是有些不起作用对。我使用的是Python 3.X,据我所知,输入应使用字符串而不使用原始输

  • 这是我刚接触Python时就一直在阅读的一本书中的一些代码……这一部分按它应该的方式工作 我的困境是…我需要验证输入是什么…因此,如果用户输入的是一个字符串(比如“五”而不是数字),而不是q或数字,它会告诉他们“很抱歉,“五”是无效的。请重试…然后它会再次提示用户输入。我是Python新手,一直在为这个简单的问题绞尽脑汁 *更新**因为我没有足够的积分来为我自己的问题添加答案,所以我在这里发布这个

  • 使用JOptionPane。ShowInputDialog,我需要检查用户是否输入int,否则,JOptionPane应该返回错误消息,并提示用户输入正确的数据类型。 同时,如果用户点击取消节目则应返回主菜单。 对我如何做到这一点有什么建议吗?

  • 我正在做一个简单的程序,要求用户输入0-19之间的五个数字。我想在每个数字后面添加一些东西(比如if语句),以确保它在这个范围内。如果不是,程序应该说“请再读指令”,然后system.exit(0)。这段代码是相关的: 如有任何帮助,将不胜感激。