【问题标题】:Select default value on h:selectOneMenu [duplicate]在 h:selectOneMenu 上选择默认值 [重复]
【发布时间】:2016-12-26 20:46:19
【问题描述】:

我是 JSF 的新手,我对 h:selectOneMenu 有一些问题 我有国家的组合 1 和城市的组合 2,我想在组合 1 更改时重新加载组合 2 并始终将组合 2 保留为默认值(--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.德国 2.意大利 3.西班牙 4.法国

Combo2 颜色。 (选择德国) 1. 黑色 2. 红色。 3. 黄色

我选择黑色!,然后我在组合 1 中选择意大利,因为意大利国旗上没有黑色,它会返回 --Select-- 但是,如果意大利国旗有黑色,它会重新加载其余的值,但将黑色保留为选中状态,而不是返回到 --select-- 现在更清楚了吗?

【问题讨论】:

    标签: jsf javabeans selectonemenu


    【解决方案1】:

    您快到了,只需将itemValue="#{null}"noSelectionOption="true" 属性添加到&lt;f:selectItem&gt; 标记即可。

    <h:selectOneMenu id="city" value="#{bean.city}">
        <f:selectItem itemValue="#{null}" itemLabel="--Select--" noSelectionOption="true"/>
        <f:selectItems value="#{bean.getCitys()}" />
    </h:selectOneMenu>
    

    原来是here

    【讨论】:

    • 感谢您的回复,但没有解决问题。让我给你一个完整的例子,让它更清楚(我的英语很糟糕......)。问题是当第二个选择的值与第一个相同时,例如。
    • @SebastianMotavita:如果您发现重复问题,您可以将问题标记为这样,而不是创建几乎相同的答案并拆分“讨论”。对于大多数“基本”问题,您已经找到了答案..
    • @user3285427:好吧,我认为当您更新第二个组合(它具有 bean 的城市值,可能是字符串)时,它正在获取 bean.city 的值,即从之前的选择中保存,在本例中为“黑色”,可能 getCitys 方法没有像您那样更新。
    猜你喜欢
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-30
    • 1970-01-01
    • 2019-01-25
    相关资源
    最近更新 更多