Disabled de CommandLink dinamico - Primefaces

3 respostas
V

Bom dia galera, tenho uma pagina xhtml que tem o link novo e link salvar, ao abrir a pagina ele traz o novo habilitado e o salvar desabilitado e quando o usuário clicar em novo ele habilita o salvar. O problema é que não estou conseguindo fazer esse evento. Segue a codificação:

Pagina XHTML

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui">
<script type="text/javascript" src="Script.js"></script>    
<p:dialog header="Cadastro de País" widgetVar="GRLPR001" width="600" height="235"  resizable="false" minimizable="true" closable="false">
        <h:panelGrid columns="13" >
            <p:commandLink id="novo" disabled="#{padraoBean.disabledNovo}" action="#{padraoBean.novo()}"> 
                <p:graphicImage value="/imagens/novo.png" style="border: none;"/>
            </p:commandLink>
            <p:tooltip for="novo" value="Novo" showEffect="fade" hideEffect="fade" />

            <p:commandLink id="editar" disabled="#{padraoBean.disabledEditar}"> 
                <p:graphicImage value="/imagens/editar.png" style="border: none;"/>
            </p:commandLink>
            <p:tooltip for="editar" value="Editar" showEffect="fade" hideEffect="fade" />

            
            <p:commandLink id="excluir" disabled="#{padraoBean.disabledExcluir}"> 
                <p:graphicImage value="/imagens/excluir.png" style="border: none;"/>
            </p:commandLink>
            <p:tooltip for="excluir" value="Excluir" showEffect="fade" hideEffect="fade" />

            <p:commandLink id="cancelar" type="reset" disabled="#{padraoBean.disabledCancelar}"> 
                <p:graphicImage value="/imagens/cancelar.png" style="border: none;"/>
            </p:commandLink>
            <p:tooltip for="cancelar" value="Cancelar" showEffect="fade" hideEffect="fade" />

            <p:commandLink id="fechar" onclick="GRLPR001.hide()" disabled="#{padraoBean.disabledFechar}"> 
                <p:graphicImage value="/imagens/fechar.png" style="border: none;"/>
            </p:commandLink>
            <p:tooltip for="fechar" value="Fechar" showEffect="fade" hideEffect="fade" />
            
            <p:spacer width="20px"/>
            
        </h:panelGrid>
        
       <h:panelGrid columns="1">
            <h:outputText value="Código" />
        </h:panelGrid>        
    
       <h:panelGrid columns="3">
            <p:inputText disabled="true" style="width: 70px; height: 20px" />
            
            <p:commandLink id="pesquisar" disabled="#{padraoBean.disabledPesquisar}"> 
                <p:graphicImage value="/imagens/pesquisar.png" style="border: none;"/>
            </p:commandLink>           
            <p:tooltip for="pesquisar" value="Pesquisar" showEffect="fade" hideEffect="fade" />                        
        </h:panelGrid>        
    
    
       <h:panelGrid columns="1">
            <p:separator style="width: 560px"/>
            <h:outputText value="Nome" />
            <p:inputText disabled="true" maxlength="40" style="width: 560px; height: 20px" />            
        </h:panelGrid>   
    
    
        <center>
            <p:commandLink id="salvar" disabled="#{padraoBean.disabledSalvar}"> 
                <p:graphicImage value="/imagens/salvar.png" style="border: none;"/>
            </p:commandLink>
            <p:tooltip for="salvar" value="Salvar" showEffect="fade" hideEffect="fade" />
        </center>
    
    </p:dialog>
</html>

Link - Novo:

<p:commandLink id="novo" disabled="#{padraoBean.disabledNovo}" action="#{padraoBean.novo()}"> 
                <p:graphicImage value="/imagens/novo.png" style="border: none;"/>
            </p:commandLink>

Link - Salvar:

<p:commandLink id="salvar" disabled="#{padraoBean.disabledSalvar}"> 
                <p:graphicImage value="/imagens/salvar.png" style="border: none;"/>
            </p:commandLink>

PadraoBean.java

package controller;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import org.primefaces.event.CaptureEvent;

@ManagedBean
@RequestScoped
public class PadraoBean {
    
    private boolean disabledNovo;
    private boolean disabledEditar;
    private boolean disabledExcluir;
    private boolean disabledCancelar;
    private boolean disabledFechar;
    private boolean disabledPesquisar;
    private boolean disabledSalvar;
    private boolean edicao;

    public boolean isEdicao() {
        return edicao;
    }

    public void setEdicao(boolean edicao) {
        this.edicao = edicao;
    }

    public boolean isDisabledCancelar() {
        return disabledCancelar;
    }

    public void setDisabledCancelar(boolean disabledCancelar) {
        this.disabledCancelar = disabledCancelar;
    }

    public boolean isDisabledEditar() {
        return disabledEditar;
    }

    public void setDisabledEditar(boolean disabledEditar) {
        this.disabledEditar = disabledEditar;
    }

    public boolean isDisabledExcluir() {
        return disabledExcluir;
    }

    public void setDisabledExcluir(boolean disabledExcluir) {
        this.disabledExcluir = disabledExcluir;
    }

    public boolean isDisabledFechar() {
        return disabledFechar;
    }

    public void setDisabledFechar(boolean disabledFechar) {
        this.disabledFechar = disabledFechar;
    }

    public boolean isDisabledNovo() {
        return disabledNovo;
    }

    public void setDisabledNovo(boolean disabledNovo) {
        this.disabledNovo = disabledNovo;
    }

    public boolean isDisabledPesquisar() {
        return disabledPesquisar;
    }

    public void setDisabledPesquisar(boolean disabledPesquisar) {
        this.disabledPesquisar = disabledPesquisar;
    }

    public boolean isDisabledSalvar() {
        return disabledSalvar;
    }

    public void setDisabledSalvar(boolean disabledSalvar) {
        this.disabledSalvar = disabledSalvar;
    }

    public PadraoBean() {
        disabledNovo      = false;
        disabledEditar    = true;
        disabledExcluir   = true;
        disabledCancelar  = false;
        disabledFechar    = false;
        disabledPesquisar = false;
        disabledSalvar    = true;
        edicao            = false;        
    }
    
    public void novo() {
        edicao         = true;
        disabledNovo   = true;
        disabledSalvar = false;
    }
}

Alguem sabe como fazer isso ? Grato

3 Respostas

A

vc chegou a ver se passa pelo método novo()?
se passa, acho que falta atualizar o link salvar…
tenta assim:

<p:commandLink id="novo" disabled="#{padraoBean.disabledNovo}" action="#{padraoBean.novo()}" update="salvar"> <p:graphicImage value="/imagens/novo.png" style="border: none;"/> </p:commandLink>
se não acontecer nada assim, tenta assim só para ver se funciona update="@Form"…

V

Obrigado cara, funcionou. Mas tem como eu fazer o update para todos os componentes ? Por exemplo, eu tenho varios inputText e ter que colocar de um a uma deixaria o codigo grande depedendo da tela. Tem como ? Ja usei @Form não foi, deu até um erro. Obrigado.

A

vc pode colocar:
update="@all" - todos os componentes serão processados…
update="@none" - nenhum.
update="@this" - apenas o próprio componente.
update="@form" - todos os componentes do form…
update=“id1,id2,id3,…” - atualiza a lista de id…

Criado 26 de março de 2012
Ultima resposta 27 de mar. de 2012
Respostas 3
Participantes 2