두 개의 h : selectOneMenu (1 : Countries, 2 : Cities)가 있습니다. ajax를 사용하여 도시 selectOneMenu에서 선택한 국가의 모든 도시를로드해야합니다. 국가 selectOneMenu의 값을 변경할 때 내 도시 selectOneMenu는 countryBean.selectedCountry에서 Null 값을 가져옵니다. countryBean.selectedCountry는 항상 null이기 때문에Loading h : 다른 h에 따라 selectOneMenu : selectOneMenu 값
public List<city> findAllCitiesByCountry(Country country) {
List<City> cities = null;
try {
cities = citiesService.findAllCitiesByCountry(country);
} catch (Exception exception) {
logger.debug("Error finding cities.", exception);
}
return cities;
}
내가 NullPointerException이 점점 오전 :
<h:panelGrid columns="2">
<h:outputLabel for="countries" value="Countries: " />
<h:selectOneMenu converter="omnifaces.SelectItemsConverter"
id="countries" required="true" value="#{countryBean.selectedCountry}">
<f:selectItem itemLabel="Choose country" />
<f:selectItems value="#{countriesBB.findAllCountries()}"
var="country" itemLabel="#{country.name}" />
<f:ajax event="change" render="cities" />
</h:selectOneMenu>
<h:outputLabel for="cities"
value="Cities: " />
<h:selectOneMenu converter="omnifaces.SelectItemsConverter"
id="cities" required="true"
value="#{cityBean.selectedCity}">
<f:selectItem itemLabel="Choose city" />
<f:selectItems value="#{cityBean.findAllCitiesByCountry(countryBean.selectedCountry)}"
var="city" itemLabel="#{city.name}" />
</h:selectOneMenu>
</h:panelGrid>
이
은 도시를 찾는 방법입니다. 이 작업을 수행하는 올바른 방법은 무엇입니까? JSF 스타터가 알아야 할 많은 규칙
는 여기에 킥오프 예입니다. 예를 들어 @RequestScoped를 사용하면 양식을 제출할 때마다 클래스의 새 인스턴스가 호출됩니다. 유효성 검사에 실패하고 동일한 페이지로 돌아 가면 문제가 발생하기 시작합니다. – Amin