我有以下 JSF 2 代码:
<p:selectOneMenu id="dropdown" value="#{data.selection}" required="true" converter="selectOneMenuConverter">
<f:selectItem itemLabel="Select one..." itemValue="" noSelectionOption="true" />
<f:selectItems value="#{data.entries}" var="entry" itemLabel="#{entry.name}" itemValue="#{entry}" />
<p:ajax update="display" event="change" />
</p:selectOneMenu>
<h:panelGroup id="display">
<h:outputText value="#{data.selection}" />
</h:panelGroup>
当我从下拉列表中选择一个值时,一切都按预期工作。当用户通过选择“Select One”来“取消选择”一个条目时,JSF 抱怨这是不可能的,因为需要 selectonemenu。
问题出在 p:ajax 进行部分提交以触发验证。Immediate=true 也不起作用,因为如果立即发生在输入字段上(如 selectonemenu 是),则会执行验证。只有当用户按下页面底部的“继续”按钮时才会进行验证(代码中未显示)
此外,给定的转换器将字符串转换为对象,并且对于默认值,它返回 null(这也是域内“无选择”的预期值)。
所以我的问题是我必须做些什么来完成我的案子。对我来说,这是一个标准案例,我无法想象没有解决方案。
有任何想法吗?
最好的问候,弗洛里安