我是JSF的新手,我在使用h:selectOneMenu时遇到了一些问题 我有combo1 with country和combo2 with citys,我想在combo1更改时重新加载combo2并且总是让combo2保留默认值(--select--)。 我正在使用ajax事件重新加载值,并且工作正常,但我不能在每次更改时保留我想要的默认值。
<h:selectOneMenu id="country" value="#{bean.country}">
<f:selectItem itemValue="" itemLabel="--Select--" />
<f:selectItems value="#{bean.getCountrys()}" />
<f:ajax event="change" listener="#{bean.getCitys}" render="city" execute="@this"></f:ajax>
</h:selectOneMenu>
<h:selectOneMenu id="city" value="#{bean.city}">
<f:selectItem itemValue="" itemLabel="--Select--" />
<f:selectItems value="#{bean.getCitys()}" />
</h:selectOneMenu>
编辑: 感谢您的回复,但它没有解决问题。让我举一个充分的例子来说明一点(我的英语很糟糕......)。问题是当第二个选择具有与第一个选择相同的值时,例如。 组合1标志: 1.Germany 2.Italy 3.Spain 4.France
Combo2颜色。 (选择德国) 黑色 2.红色。 3.黄色
我选择黑色!,然后我选择组合1意大利,因为意大利国旗上没有黑色,它回到 - 选择 - 但是,如果意大利国旗将有黑色,它重新加载其余的值但是选择了黑色,而不是返回 - 选择 - 现在更清楚了吗?
答案 0 :(得分:0)
您就在那里,只需将itemValue="#{null}"
和noSelectionOption="true"
属性添加到<f:selectItem>
代码。
<h:selectOneMenu id="city" value="#{bean.city}">
<f:selectItem itemValue="#{null}" itemLabel="--Select--" noSelectionOption="true"/>
<f:selectItems value="#{bean.getCitys()}" />
</h:selectOneMenu>
最初得到答案here。