Editando itens selecionados com primefaces!

3 respostas
syncel

Bom dia Galera, beleza? Estou aprendendo a parte de programação ainda e gostaria de tirar uma duvida...

Tenho uma lista simples com Row Selection... até ai certo, ele funciona...

O que eu queria mesmo, é que depois de selecionar o que eu quero, eu clique no botão "EDITAR" e ele vá para a Pagina de edição do mesmo...
vou postar o código aqui abaixo.

<p:dataTable id="beneficiarios" value="#{beneficiarioControle.lista}"  rows="10" rowKey="#{ben.nome}" rowsPerPageTemplate="20,40,60" 
                         var="ben" paginator="true" paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} 
                         {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" selection="#{ben.benSelecionados}" selectionMode="single">                           
                <f:facet name="header">
                    Beneficiários
                </f:facet>
                
                <p:column>  
                    <f:facet name="header">  
                        <h:outputText value="Nome do Beneficiário" />  
                    </f:facet>  
                    <h:outputText value="#{ben.nome}"/>
                </p:column>
                <p:column width="90">  
                    <f:facet name="header">  
                        <h:outputLabel value="CPF" />  
                    </f:facet>  
                    <h:outputText value="#{ben.cpf}"/>
                </p:column>
                <p:column width="75">  
                    <f:facet name="header">  
                        <h:outputText value="RG"/>  
                    </f:facet>  
                    <h:outputText value="#{ben.rg}"/>
                </p:column>
                <p:column>  
                    <f:facet name="header">  
                        <h:outputText value="Orgão Emissor" />  
                    </f:facet>  
                    <h:outputText value="#{ben.orgaoemissor}"/>
                </p:column>
                <p:column>  
                    <f:facet name="header">  
                        <h:outputText value="Nome do Cônjugue" />  
                    </f:facet>  
                    <h:outputText value="#{ben.nomecon}"/>
                </p:column>
                <p:column width="90">  
                    <f:facet name="header">  
                        <h:outputLabel value="CPF" />  
                    </f:facet>  
                    <h:outputText value="#{ben.cpf}"/>
                </p:column>
                <p:column width="75">  
                    <f:facet name="header">  
                        <h:outputText value="RG"/>  
                    </f:facet>  
                    <h:outputText value="#{ben.rg}"/>
                </p:column>
                <p:column>  
                    <f:facet name="header">  
                        <h:outputText value="Orgão Emissor" />  
                    </f:facet>  
                    <h:outputText value="#{ben.orgaoemissor}"/>
                </p:column>
                <p:column>  
                    <f:facet name="header">  
                        <h:outputText value="Endereço" />  
                    </f:facet>  
                    <h:outputText value="#{ben.endereco}"/>
                </p:column>
                <p:column width="82">  
                    <f:facet name="header">  
                        <h:outputText value="Contato" />  
                    </f:facet>  
                    <h:outputText value="#{ben.contato}"/>
                </p:column>
                <p:column>  
                    <f:facet name="header">  
                        <h:outputText value="Observações" />  
                    </f:facet>  
                    <h:outputText value="#{ben.observacoes}"/>
                </p:column>
               
            </p:dataTable>
            <p:toolbar>
                <p:toolbarGroup align="left">
                    <p:commandButton value="Novo" icon="ui-icon-document" action="beneficiarioEdita"/>
                    <p:commandButton value="Voltar" icon="ui-icon-arrowthick-1-w" action="index"/>
                    <p:separator />
                    <p:commandButton value="Editar" icon="ui-icon-pencil" action="#{beneficiarioControle.editar}"/>
                    <p:commandButton value="Excluir" icon="ui-icon-trash" action="#{beneficiarioControle.excluir}"/>
                </p:toolbarGroup>
            </p:toolbar>
@ManagedBean(name = "beneficiarioControle")
@SessionScoped
public class beneficiarioControle implements Serializable {

    private Beneficiario beneficiario = new Beneficiario();
    @EJB
    private BeneficiarioFacade beneficiarioFacade;
    private List<Beneficiario> lista = new ArrayList<Beneficiario>();

    public void salvar() {
        beneficiarioFacade.salvar(beneficiario);
    }

    public void novo() {
        beneficiario = new Beneficiario();
    }
    
    public void editar(ActionEvent e){
        beneficiario = (Beneficiario) e.getComponent().getAttributes().get("beneficiario");
    }
    
    public void excluir(ActionEvent e){
        beneficiario = (Beneficiario) e.getComponent().getAttributes().get("beneficiario");
        beneficiarioFacade.remove(beneficiario);
    }

    public List<Beneficiario> getLista() {
        return beneficiarioFacade.consultar();
    }

    public void setLista(List<Beneficiario> lista) {
        this.lista = lista;
    }

    public BeneficiarioFacade getBeneficiarioFacade() {
        return beneficiarioFacade;
    }

    public void setBeneficiarioFacade(BeneficiarioFacade beneficiarioFacade) {
        this.beneficiarioFacade = beneficiarioFacade;
    }

    public Beneficiario getBeneficiario() {
        return beneficiario;
    }

    public void setBeneficiario(Beneficiario beneficiario) {
        this.beneficiario = beneficiario;
    }

3 Respostas

giovanni_dalfre

Se você estiver utilizando escopo de sessão (SessionScope), você só precisa mudar de página depois que o registro foi selecionado, pois o bean estará com o valor selecionado na pagina anterior…

Se você estiver utilizando escopo de requisição (RequestScope), você precisará dar um “<f:setPropertyActionListener>”, para passar o valor desejado para o bean da tela de edição…

Posta o seu Bean, se possível, que fica mais fácil de ajudar você.

syncel

Giovanni, enviei o Bean, não entendi muito bem o que você tentou explicar, como eu disse, sou novato nisso :S

giovanni_dalfre

(SessionScope) = você mantem o bean enquanto o usuario estiver utilizando seu sistema…

(RequestScoped) = cada vez que você faz um acesso ao bean, ele tem seus valores zerados…

No seu caso, session, você precisa fazer o seguinte :

No bean

private Beneficiario beneficiarioSelecionado;
//get e set

Na pagina

selection="#{beneficiarioControle.beneficiarioSelecionado}"

No seu botão “Editar”

<p:commandButton value="Editar" icon="ui-icon-pencil" action="/paginas/editar.xhtml"/>

E a pagina “editar” onde os campos são do “beneficiarioSelecionado”:

<h:outputText value="Nome:" />
<p:inputText id="name" value="#{beneficiarioControle.beneficiarioSelecionado.nome}" />
//outros campos, do mesmo jeito...

Resumindo:
Quando selecionar um registro da lista, o “beneficiarioSelecionado” recebe esse registro.
Você entra na tela de edição, onde os campos têm os valores desse registro…
So editar e salvar…

Criado 28 de agosto de 2012
Ultima resposta 28 de ago. de 2012
Respostas 3
Participantes 2