0

我正在使用 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 上的一个问题,因为在 ah:inputText 上做同样的事情可以正常工作。

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

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

4

1 回答 1

0

我可以确认扩展 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>
于 2013-07-27T14:06:38.247 回答