我是 JSF 的新手,我被困在一个地方。我有一个包含两项的下拉列表。
银行
现金
现在,如果我选择银行,则另一个下拉列表应填充与银行相关的项目,如果我选择现金,则现金项目应显示在第二个下拉列表中。
如何在 JSF 中做到这一点?我必须在哪里进行更改?
任何帮助将不胜感激。谢谢
我是 JSF 的新手,我被困在一个地方。我有一个包含两项的下拉列表。
银行
现金
现在,如果我选择银行,则另一个下拉列表应填充与银行相关的项目,如果我选择现金,则现金项目应显示在第二个下拉列表中。
如何在 JSF 中做到这一点?我必须在哪里进行更改?
任何帮助将不胜感激。谢谢
那么你可以使用 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”属性来实现