我正在使用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"/>
提交表格后,请选择“我选择”,我会显示所需的信息。如果我然后选择选项'Mr',然后再次提交,但是页面上的其他字段有错误,则重新加载页面,并且所需的标题消息已经消失,Mr被选中,如预期的那样。如果我然后将其更改回请选择并再次提交,我会再次显示所需的消息,但所选的选项已恢复为'Mr'而不是'Please Select'。 #{person.title} EL绑定到String,默认为空字符串。到目前为止,这似乎只是selectOneMenu上的一个问题,因为在h上做同样的事情:inputText正常工作。
有什么想法吗?还尝试过使用webflow 2.3.2.RELEASE并发生同样的问题。
看起来与此问题相同:https://java.net/jira/browse/JAVASERVERFACES-932大约4岁,并且具有固定的分辨率。这绝对不是固定的。我将尝试扩展MenuRenderer并使用Jira问题末尾提到的建议覆盖renderOption方法。
答案 0 :(得分: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>