1

このコードでアイテムを選択した後、都市コンポーネントがレンダリングされないのはなぜですか?

<h:form prependId="false">
<h:panelGrid columns="1">
<h:selectOneMenu value="#{enumBeanStatus.selectedRegion}">
<f:selectItems id="selectItem" value="#{enumBean.regions}" var="region" itemLabel="#{region.label}"/>
<f:ajax listener="#{enumBean.loadCities}" render="cities"/>
</h:selectOneMenu>
<h:outputText id="cities" value="#{enumBean.cities}"/>
</h:panelGrid>
</h:form>

選択したリージョンでPOSTを送信し、モデルは正しく更新されますが、<h:outputText>コンポーネントはレンダリングされません。

バッキングビーンの1つ:

@Named
public class EnumBean {

private List<Region> regions;
private List<City> cities;

@Inject 
EnumBeanStatus enumBeanStatus; //This one is CDI @ApplicationScoped & @Named




// Code...

public void loadCities(){
setCities(City.getCitiesByRegion(enumBeanStatus.getSelectedRegion()));
}

// Getters and Setters
}
4

1 に答える 1

4

から削除prependId="false"<h:form>ます。<f:ajax>相対的なクライアントIDに基づいて適切なコンポーネントを解決することを防ぎます。

参照:

于 2013-01-22T14:19:33.560 に答える