我是JSF的新手,我被困在一个地方。我有一个下拉列表,其中包含两个项目。
银行
现金
现在,如果我选择银行,则其他下拉列表应填充与银行相关的项目,如果我选择现金,则现金项目应显示在第二个下拉列表中。
如何在JSF中执行此操作?我必须在哪里做出改变?
任何帮助都将受到高度赞赏。谢谢
答案 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”属性
来实现