在JSF中更改selectOneMenu的值

时间:2013-11-05 10:05:25

标签: jsf selectonemenu

我是JSF的新手,我被困在一个地方。我有一个下拉列表,其中包含两个项目。

  1. 银行

  2. 现金

  3. 现在,如果我选择银行,则其他下拉列表应填充与银行相关的项目,如果我选择现金,则现金项目应显示在第二个下拉列表中。

    如何在JSF中执行此操作?我必须在哪里做出改变?

    任何帮助都将受到高度赞赏。谢谢

1 个答案:

答案 0 :(得分:0)

那么你可以使用primeface来改善jsf开发

 <p:selectOneMenu id="cboCountries" value="#{beanCountries.ValueSelected}" effect="fade">
       <f:selectItem itemLabel="Select Country" itemValue="-1" /> //a default value
       <f:selectItems value="#{beanCountries.listOfCountries}" var="countries" itemLabel="#{countries.name}" itemValue="#{countries.id}"/>
       <p:ajax event="change" update="cboCities" listener="beanCountries.listCities()"/> //notice "update" refresh an especific DOM Element of an especific ID
 </p:selectOneMenu>

 <p:selectOneMenu id="cboCities" value="#{beanCities.ValueSelected}" effect="fade">
       <f:selectItem itemLabel="Select City" itemValue="-1" /> //a default value
       <f:selectItems value="#{beanCities.listOfCities}" var="cities" itemLabel="#{cities.name}" itemValue="#{cities.id}"/> //this is when you want to put elements from DB or from an Array 
 </p:selectOneMenu>

“是来自primefaces的特殊标记,event =”change“将调用你从第一个”ComboBox“中选择一个元素然后属性更新将刷新第二个comboBox,并且属性”listener“将执行逻辑你想做什么的动作,在这种情况下,方法“listCities()”将用DB o Arrays中的值填充“listOfCities”。

所以在没有主要面的jsf中会是这样的:

<h:form>
        <h:selectOneMenu value="#{beanCountries.ValueSelected}">
           <f:selectItem itemLabel="Select Country" itemValue="-1" /> //a default value
           <f:selectItems value="#{beanCountries.listOfCountries}" var="countries" itemLabel="#{countries.name}" itemValue="#{countries.id}"/>
        </h:selectOneMenu>

        <h:selectOneMenu id="cboCities" value="#{beanCities.ValueSelected}">
               <f:selectItem itemLabel="Select City" itemValue="-1" /> //a default value
               <f:selectItems value="#{beanCities.listOfCities}" var="cities" itemLabel="#{cities.name}" itemValue="#{cities.id}"/> //this is when you want to put elements from DB or from an Array 
         </h:selectOneMenu>
         <h:commandButton value="Submit" action="beanCountries.listCities()"/>
</h:form>

这种方式是使用按钮(在jsf中),action属性将执行java方法然后刷新页面。这也可以通过selectOneMenu组件的“ValueChangeListener”属性

来实现