0

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

  1. 银行

  2. 现金

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

如何在 JSF 中做到这一点?我必须在哪里进行更改?

任何帮助将不胜感激。谢谢

4

1 回答 1

0

那么你可以使用 primefaces 来改进 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 的一个特殊标记,事件 = "change" 将调用您从第一个 "ComboBox" 中选择一个元素,然后属性更新将刷新第二个组合框,并且属性 "listener" 将执行什么的逻辑操作您想要这样做,在这种情况下,方法“listCities()”将使用来自 DB o Arrays 的值填充“listOfCities”。

所以在没有primefaces的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”属性来实现

于 2013-11-05T15:44:23.597 回答