Pessoal,
Estou precisando fazer o seguinte:
Carregar todos os menus, vindo do BD, dentro de um selectManyCheckbox e de acordo com o tipo de usuário, selecionado em um selectOneMenu, deixar selecionado os menus que esse usuário tem permissão.
Eu consigo listar todos os menus, vindo do BD, tenho uma função que carrega os menus que cada tipo de usuário tem permissão, mas ainda não consigo deixar os selectItem selecionados, de acordo com as permissões de cada tipo de usuário.
Seria assim:
Escolho no selectOneMenu o tipo de usuário ‘Gerente’.
Embaixo desse selectOneMenu, tenho todos os menus listados, dentro de um selectManyCheckbox. Quando eu escolho Gerente, quero que essa lista de menus seja atualizada e as permissões que o Gerente têm apareçam selecionadas, os outros menus, que ele não tem permissão de acesso, ficam sem estar selecionado.
Tipo de usuario: ‘Gerente’ (selectOneMenu com vários outros tipos)
Permissões:
X Menu 1 (O tipo de usuário Gerente tem acesso ao Menu 1 - quero que fique marcado)
Menu 2 (Gerente não tem acesso ao menu 2, então ele continua na lista de menus, mas não fica marcado)
X Menu 3 (O tipo de usuário Gerente tem acesso ao Menu 1 - quero que fique marcado)
Como posso fazer isso?
Eu tenho a lista de tipos de usuário,. que já traz do BD as permissões de cada tipo
<p:selectOneMenu id="listaTipoUsuario"
value="#{permissaoController.permissao.tipoUsuario}"
required="true"
converter="tipoUsuarioConverter"
requiredMessage="Por favor, selecione o tipo de usuário.">
<f:selectItem itemLabel="Selecione..."/>
<f:selectItems value="#{tipoUsuarioController.listaDeTiposDeUsuarioParaCombobox}"/>
<p:ajax update="permissoesPorTipo"
listener="#{permissaoController.carregaPermissoesPorTipoDeUsuario}"/>
</p:selectOneMenu>
Tenho também a lista de todos os menus:
<p:selectManyCheckbox id="menus" layout="pageDirection">
<f:selectItems value="#{menuController.listaDeSelectItensDeMenu}"/>
</p:selectManyCheckbox>
O problema é que não consigo marcar os itens da minha lista de menus, de acordo com o tipo de usuário selecionado no selectOneMenu.
Tem como fazer isso?