Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

[Dúvida] Habilitar componentes jsf ao clicar em um commandButton

Estou com duvidas ao clicar em um commandButton para habilitar e desabilitar componentes do formulário. Se alguém puder ajudar agradeço. Tenho um botão novo que ao clicar deveria habilitar os componentes, e ao salvar ele devia bloquear, mesma logica para excluir. vou colocar parte do código para exemplificar. Se alguem puder ajudar agradeço <p:commandButton title="Novo" style="height:40px;width:40px;background:#CDCDC1;border: 1px solid #FFFFFF;" actionListener="#{autorBean.novo}" ajax="true" id="buttonNovoAutor" icon="imgAdiciona" immediate="false" update="formCadastroAutor " >

    <p:ajax listener="#{autorBean.novo}" />
    </p:commandButton>

    <p:commandButton title="Desfazer"
        style="height:40px;width:40px;background:#CDCDC1;border: 1px solid #FFFFFF;"
        id="buttonLimparAutor" onclick="limparFormulario()"
        icon="imgCDesfazer"
        actionListener="#{autorBean.novo}"
        >
        <p:ajax listener="#{autorBean.novo}" />
    </p:commandButton>

    <p:commandButton title="Salvar"
        style="height:40px;width:40px;background:#CDCDC1;border: 1px solid #FFFFFF;"
        actionListener="#{autorBean.gravar}" ajax="true"
        id="buttonSalvarAutor" partialSubmit="true" process="@this, @form"
        icon="imgBtSave" immediate="false" update="formCadastroAutor">

        <c:if test="#{autorBean.autor.id !=null}">
            <p:confirm header="Confirmação" message="Deseja salvar o registro?" />
        </c:if>
        
    </p:commandButton>
    <p:confirmDialog global="true" showEffect="fade" hideEffect="fade">
        <p:commandButton value="Sim" type="button"
            styleClass="ui-confirmdialog-yes" />
        <p:commandButton value="Não" type="button"
            styleClass="ui-confirmdialog-no" />
    </p:confirmDialog>


    <p:commandButton title="Excluir"
        style="height:40px;width:40px;background:#CDCDC1;border: 1px solid #FFFFFF;"
        actionListener="#{autorBean.remover}" ajax="true"
        
        id="botaoExcluirAutor" process="@this, @form" immediate="false"
        icon="imgExclSv" update="formCadastroAutor" 
    
        
        >
        <c:if test="#{autorBean.autor.id !=null}">
        
        
            <p:confirm header="Confirmação" message="Deseja excluir o registro?" />
        </c:if>
    </p:commandButton>
    <p:confirmDialog global="true" showEffect="fade" hideEffect="fade">
        <p:commandButton value="Sim" type="button"
            styleClass="ui-confirmdialog-yes" />
        <p:commandButton value="Não" type="button"
            styleClass="ui-confirmdialog-no" />
    </p:confirmDialog>

    <p:commandButton title="Consulta"
        style="height:40px;width:40px;background:#CDCDC1;border: 1px solid #FFFFFF;"
        id="botaoConsultaAutor" icon="imgPesquisa"
        action="#{autorBean.abrirDialogo}" process="@this" update="@none">
        <p:ajax event="dialogReturn" listener="#{autorBean.autorSelecionado}"
            update="@form" />
    </p:commandButton>

    <p:commandButton title="Sair"
        style="height:40px;width:40px;background:#CDCDC1;border: 1px solid #FFFFFF;"
        onclick="cadastroAutor.close()" ajax="false" id="buttonSairAutor"
        immediate="false" icon="imgCclose" update="formCadastroAutor">
        <p:resetInput target="buttonSairAutor" />
    </p:commandButton>
3 respostas

Oi, Themer, tudo bem?

Para que eu possa te ajudar de forma mais assertiva, preciso de mais detalhes sobre o seu código. O trecho que você enviou mostra os commandButtons, mas a lógica para habilitar e desabilitar os componentes do formulário geralmente está associada aos atributos dos campos (como disabled ou rendered) e é controlada pelo seu Backing Bean (autorBean.java).

Sem visualizar o código completo do seu formulário no arquivo XHTML e da sua classe autorBean.java, fica incerto dizer exatamente o que está acontecendo.

Você poderia compartilhar o código completo? Assim, consigo realizar testes e te dar uma solução precisa para a sua necessidade.

Fico no aguardo e à disposição
solução!

Olá Victor, tentei postar parte do código porem extrapolou a quantidade máxima. deixei o link do Google drive para facilitar. Usei Dialog nas telas de cadastro e consulta.

Minha necessidade seria: Ao clicar em novo ele desabilitaria o próprio componente e habilitaria os do form, uso essa logica em minha aplicação desktop, porém Web é totalmente diferente.

Outra pergunta no desenvolvimento desktop eu tenho atalhos tipo F2 pressiona o botão novo, F3 desfazer e por ai vai.

Se puder essa força agradeço. Att.

Bom que se alguém vir este no grupo pode utilizar para tirar alguma ideia e melhorar

https://1drv.ms/u/c/55771f463d624688/EcWbek9xRBhCobUY2c3lofEBQfyiDHhekKH8nVcPfdGuCg?e=721xI2

Olá Victor, tentei postar parte do código porem extrapolou a quantidade máxima. deixei o link do Google drive para facilitar. Usei Dialog nas telas de cadastro e consulta.

Minha necessidade seria: Ao clicar em novo ele desabilitaria o próprio componente e habilitaria os do form, uso essa logica em minha aplicação desktop, porém Web é totalmente diferente.

Outra pergunta no desenvolvimento desktop eu tenho atalhos tipo F2 pressiona o botão novo, F3 desfazer e por ai vai.

Se puder essa força agradeço. Att.

Bom que se alguém vir este no grupo pode utilizar para tirar alguma ideia e melhorar

https://1drv.ms/u/c/55771f463d624688/EcWbek9xRBhCobUY2c3lofEBQfyiDHhekKH8nVcPfdGuCg?e=721xI2