刷新SelectOneMenu

时间:2017-07-10 16:22:58

标签: twitter-bootstrap jsf-2

我有两个SelectOneMenu。第一个包含国家/地区列表,我希望第二个包含根据第一个下拉列表中选择的国家/地区列出的城市列表。为此,我按以下步骤操作: 首先,在我的列表中包含国家/地区列表,我会听取这样的价值变化:

<div class="form-group">
    <label class="col-lg-3 control-label" for="#{val['inscription.country']}"><h:outputText value="#{val['inscription.country']}"/><span class="required">*</span></label>
    <div class="col-lg-5">
        <h:selectOneMenu id="#{val['inscription.country']}" required="true" requiredMessage="#{val['requiredcountry']}" value="#{manageuser.country}" styleClass="form-control" validator="#{manageuser.validateCountry}" onchange="onsubmit()" valueChangeListener="#{initapp.getNamesCityByCountry}">
            <f:selectItem itemLabel="-- Choisir un Pays --" class="bold"/>
            <f:selectItems value="#{initapp.allCountry}" var="country" itemLabel="#{country.namecountry_fr_fr}" itemValue="#{country.idcountry}"/>
            <f:ajax event="blur" render="countryMessage" />
        </h:selectOneMenu>
    </div>
    <h:message id="countryMessage" for="#{val['inscription.country']}" errorClass="erreur" /><br />
</div>

然后在我的支持bean中,对于范围应用程序,我这样做是为了能够执行每次负责的方法以根据国家检索城市列表:

public void getNamesCityByCountry(ValueChangeEvent e) {
    String idselect = e.getNewValue().toString();
    Integer value = new Integer(idselect);
    this.msApplication.setListCity(this.msApplication.getIMetierLocal().getAllCity(value));
}

现在在facelet中,我这样做:

<div class="form-group">
    <label class="col-lg-3 control-label" for="#{val['inscription.city']}"><h:outputText value="#{val['inscription.city']}"/> <span class="required">*</span></label>
    <div class="col-lg-5">
        <f:selectItem itemLabel="-- Choisir une Ville --" class="bold"/>
        <h:selectOneMenu id="#{val['inscription.city']}" required="true" requiredMessage="#{valinitapp['requiredcity']}" value="#{manageuser.city}" styleClass="form-control" validator="#{manageuser.validateCity}" >
            <f:selectItem itemLabel="-- Choisir une Ville --" class="bold"/>
            <f:selectItems value="#{initapp.allCityByNameCountry}" var="city" itemLabel="#{city.namecity}" itemValue="#{city.idcity}"/>
            <f:ajax event="blur" render="cityMessage" />
        </h:selectOneMenu>
    </div>
    <h:message id="cityMessage" for="#{val['inscription.city']}" errorClass="erreur" /><br />
</div>

在我的支持bean中:

public List<City> getAllCityByNameCountry() {
    return this.msApplication.getListCity();
}

我想每次运行上面的方法(getAllCityByNameCountry()),只根据国家/地区列出城市列表。

0 个答案:

没有答案