Como carregar e exibir h dependente: selectOneMenu na mudança de ah: selectOneMenu

Eu quero criar o formulário de registro JSF que tem menu de seleção com a lista de todos os países. Eu sei que isso é fácil para a implementação com o Java HashMap mas a parte complicada que eu não sei como implementar é como logo após o usuário selecionar seu país na lista, segundo menu de seleção para aparecer com as cidades em seu país? Existe algum exemplo útil?

Muitas felicidades.

Você pode usar para isso. Quando nested em um componente de input, como , ele será, por padrão, chamado quando o valor de input for alterado. Você pode especificar um método listener que possa preencher previamente os dados para o próximo componente com base no valor de input atual e pode especificar o ID do cliente do próximo componente em render para mostrar os dados preenchidos previamente.

          

O bean deve estar no mínimo no escopo da view (não request):

 @ManagedBean @ViewScoped public class Bean implements Serializable { private String country; // +getter+setter private String city; // +getter+setter private List countries; // +getter private List cities; // +getter @EJB private LocationService locationService; @PostConstruct public void init() { countries = locationService.getCountries(); } public void changeCountry() { cities = locationService.getCities(country); } // ... } 

É claro que você também pode usar um Map vez de uma List . A chave do mapa se torna o label da opção e o valor do mapa se torna o valor da opção. Você só precisa ter em mente que um HashMap é, por natureza, desordenado. Você preferiria usar LinkedHashMap para exibir os itens na ordem de inserção do Map .

Veja também:

  • Nossa página wiki selectOneMenu
  • Quando usar valueChangeListener ou f: ajax listener?