[Resolvido] JSF habilitar e desabilitar campos no formulario
5 respostasResolvido
jsfprimefacesjava
M
marcosams
Boa tarde,
Estou criando uma aplicação JSF, em uma tela de criar usuários tenho vários perfis ,para escolher o perfil eu uso um p:selectonemenu, em um perfil especifico ele tem um campo a mais (também selectonemenu), gostaria de saber como eu desabilito esse campo para os outros perfis e só renderize quando eu escolher um perfil especifico. Obrigado.
Há vários caminhos, vou te apontar dois deles:
1 - Com javascript;
2 - Com a propriedade rendered do selectonemenu, ao alterar o primeiro, disparando um evento ajax, cujo reRender seja o selectonemenu que deseja ocultar.
M
marcosams
blz, vou tentar a segunda opção.
R
raphaeloneves
Infelizmente o selectItem não aceita o atributo rendered, o que facilitaria bastante. Porém, este componente tem acesso ao atributo itemDisabled que recebe um boolean como valor ao qual define se a option gerada no HTML terá o disabled=“disabled” como atributo. Sabendo disto, podemos fazer a seguinte abordagem:
Boa noite, ainda não consegui resolver esse problemas, já vi vários casos parecidos aqui no GUJ, mas nenhum deu certo para mim, aqui está o pedaço do meu código:
<!-- Primeiro SelectOneMenu --><p:outputLabelfor="hole"value="#{labels.user_role}: "/><p:selectOneMenuid="hole"value="#{userAddEditMB.user.role}"style="width:125px"><f:selectItemitemLabel="Selecione"itemValue=""/><f:selectItemitemLabel="Teste"itemValue="ROLE_USER"/><f:selectItemitemLabel="Administrador"itemValue="admin"/><f:selectItemitemLabel="Supervisor"itemValue="super"/><f:selectItemitemLabel="Atendente"itemValue="atend"/><f:selectItemitemLabel="Pronta Resposta"itemValue="pront"/><p:ajaxevent="change"update="displayTeam"process="@this"/></p:selectOneMenu><!-- se escolher o itemValue="pront" habilitar esse segundo select --><p:outputLabelvalue="#{labels.user_team}:"/><p:outputPanelid="displayTeam"><p:panelrendered="#{userAddEditMB.user.role} = pront"><p:selectOneMenuid="team"value="#{userAddEditMB.user.idequipe}"><f:selectItemitemLabel="Selecione"itemValue=""/><f:selectItemsvalue="#{teamMB.teams}"var="team"itemLabel="#{team.nome}"itemValue="#{team.id}"/></p:selectOneMenu></p:panel></p:outputPanel>
Eu tenho primeiro select, no caso se eu escolho o perfil Pronta Resposta que o itemValue é “pront” ele tem que habilitar o segundo select …