Olá pessoal. Estou começando com JSF e Primefaces. Estou fazendo uma tela de cadastro de usuários, cada usuário está associado a um perfil. Na minha tela preciso de uma combo que liste os perfis cadastrados. Já consegui fazer com que a combo seja carregada com os valores da tabela de perfis mas não sei como fazer para pegar o valor escolhido após o usuário clicar no botão salvar.
Página
<h:outputText value="Perfil do usuário" styleClass="content" />
<p:selectOneMenu effect="fade" panelStyle="width:150px" style="width:150px">
<f:selectItem itemLabel="Escolha um perfil" itemValue="" />
<f:selectItems value="#{userBean.listaDePerfil}" />
</p:selectOneMenu>
Bean
public List<SelectItem> getListaDePerfil() {
List<SelectItem> itens = new ArrayList<SelectItem>();
RoleDelegate rd = new RoleDelegate();
for (Role role : rd.listar()) {
itens.add(new SelectItem(role.getId(), role.getName()));
}
return itens;
}
Como ficaria o método para capturar o valor do perfil escolhido ?
Já pesquisei bastante a respeito do assunto mas não consegui encontrar uma solução para o problema, desde já agradeço a ajuda.
olá, para pegar o valor é muito simples na definicao do seu selectOneMenu acrescenta a propriedade value que ira corresponder ao atriubuto no seu managed bean onde ira receber o valor ex:
pessoalmente prefiro utilizar os componentes do primefaces apenas quando os do proprio jsf não atendem, este caso em particular eu usaria a propria selectOneMenu do jsf.
agora uma dica pra você, desde o jsf 2.0 não é mais necessario você criar um List para popular uma selectOneMenu, vc poderia simplismente criar uma List e jogar diretamente na propriedade itemValue do selectItem.
Rogério, muito obrigado mesmo pela ajuda, funcionou perfeitamente. Puxa, perdi bastante tempo buscando a maneira certa de fazer Agora, vou tentar implentar a recuperação dos dados, como posicionar a combo corretamente, de acordo com o retorno do banco ?