【问题标题】:h:selectOneMenu with Please select displays previous selection on validation errorh:selectOneMenu with Please select 在验证错误时显示先前的选择
【发布时间】:2013-06-06 07:13:11
【问题描述】:

我正在使用 Spring Webflow 2.4.0.M1 和 Mojara JSF 2.1.21。

我有一个非常简单的 h:selectOneMenu,如下所示:

<h:selectOneMenu id="title" value="#{person.title}" required="true" requiredMessage="Required title">
        <f:selectItem noSelectionOption="true" itemLabel="Please Select" itemValue="" />
        <f:selectItem itemLabel="Mr" itemValue="MR" />
        <f:selectItem itemLabel="Mrs" itemValue="MRS" />
    </h:selectOneMenu>
    <p:message for="title"/>

提交带有“请选择”上的值的表单后,我会显示所需的消息。如果我然后选择选项“先生”,然后再次提交,但页面上的其他字段有错误,则重新加载页面,并且标题所需的消息消失并且按预期选择了先生。如果我随后将其更改回请选择并再次提交,我会再次显示所需的消息,但所选选项已恢复为“先生”而不是“请选择”。 #{person.title} EL 绑定到字符串,默认为空字符串。到目前为止,这似乎只是 selectOneMenu 上的一个问题,因为在 h:inputText 上做同样的事情可以正常工作。

有什么想法吗?也尝试过使用 webflow 2.3.2.RELEASE 并出现同样的问题。

看起来与此问题相同:JAVASERVERFACES-932 大约 4 岁,分辨率为 fixed。绝对不是固定的。我将尝试扩展 MenuRenderer 并使用 Jira 问题末尾提到的建议覆盖 renderOption 方法。

【问题讨论】:

    标签: jsf-2 selectonemenu spring-webflow-2


    【解决方案1】:

    我可以确认扩展 MenuRenderer 并使用 Jira 问题末尾提到的建议覆盖 renderOption 方法可以解决问题。

    不要忘记将修补后的渲染器添加到 faces-config.xml

    <render-kit>
        <renderer>  
            <component-family>javax.faces.SelectOne</component-family>
            <renderer-type>javax.faces.Menu</renderer-type>
            <renderer-class>your.package.PatchedMenuRenderer</renderer-class>
        </renderer>
    </render-kit>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-04
      • 2012-11-09
      • 2023-02-19
      • 1970-01-01
      • 1970-01-01
      • 2018-03-11
      • 2017-01-22
      • 1970-01-01
      相关资源
      最近更新 更多