GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

[JSF+PrimeFace] DataTable


#1

Olá galera,
estou com um probleminha aqui na hora de selecionar um objeto em um datatable do primefaces.

é o seguinte:

temos esse datatable que invoca alguns metodos do meu bean que vão até o banco e recuperam alguns objetos do tipo pessoa e os adciona, segue o codigo:

<h:form id="formu">
                        <p:dataTable var="pessoa" value="#{beanFuncionario.pessoas}">
                                <p:column>
                                        <f:facet  name="header">
                                                Nome
                                        </f:facet>
                                        <h:outputText value="#{pessoa.primeiroNome}" />
                                </p:column>
                                <p:column>
                                        <f:facet name="header">
                                                Sobre Nome
                                        </f:facet>
                                        <h:outputText value="#{pessoa.sobrenome}" />
                                </p:column>
                                <p:column style="width: 12%;">
                                        <f:facet name="header">
                                                Opções
                                        </f:facet>
                                        <p:commandButton  actionListener="#{beanFuncionario.editarFuncionario}" oncomplete="EditarAdmin.show()"  image="ui-icon ui-icon-pencil">
                                                <f:setPropertyActionListener value="#{pessoa}" target="#{beanFuncionario.pessoaSelecionada}" />
                                        </p:commandButton>
                                        <p:commandButton image="ui-icon ui-icon-close" ></p:commandButton>
                                </p:column>
                        </p:dataTable>

em seguida vem um dialog que mostra as informações para edição, segue o codigo:

<p:dialog header="Editar Administrador" widgetVar="EditarAdmin" resizable="false" width="400" showEffect="clip" hideEffect="fold">
                                <h:form prependId="false">
                                        <h:panelGrid  columns="2" style="margin-bottom:10px" >
                                                <h:outputLabel value="Nome" />
                                                <p:inputText value="#{beanFuncionario.admin.primeiroNome}" />
                                                <h:outputLabel value="Sobrenome" />
                                                <p:inputText value="#{beanFuncionario.admin.sobrenome}" />
                                                <h:outputLabel value="Login" />
                                                <p:inputText  value="#{beanFuncionario.admin.login}" label="login" />
                                                <h:outputLabel value="Senha" />
                                                <p:password  value="#{beanFuncionario.admin.senha}" promptLabel="Digite suas senha" weakLabel="Fraca" goodLabel="Bom" strongLabel="Forte"/>
                                                <h:outputLabel value="Repita a senha" />
                                                <p:password feedback="false"/>
                                                <p:commandButton value="Editar"  action="#{beanFuncionario.savePessoa}" ajax="false" />
                                        </h:panelGrid>
                                </h:form>
                        </p:dialog>

O problema é o seguinte, ele só seleciona para modificar a primeira linha dessa teble, sendo que eu quero que ao selecionar qualquer uma das linhas o bjeto referente a esta linha seja jogada no dialog.

A imagem ilustra o que esta acontecendo.

Alguem pode me ajudar?


#2

cara,

coloca um id no seu panelGrid do seu modal e no seu commandButton vc da update nesse id.

t+


#3

Cara não funcionou o que acontece é que o meu dialog, só pega o primeiro objeto da lista independente de qual linha eu click.

Na pratica deveria ser o seguinte:

Eu clico na linha 1 da tabela o dialog deveria exibir o o objeto 1, quando clicar na linha 3 ele deveria me retornar o objeto 3 da lista.
O que acontece na realidade é que o único objeto que é retornado, é o que esta na primeira posição da lista, no caso o que seria apresentado
na primeiro linha da datatable.

E ai será que auguem?


#4

está faltando alguma atributos a serem configurados no seu datatable

falta o modo que vai ser selecionado as linhas no seu caso vai ser 1 linha so então : selectionMode="single"

nesse atributo você coloca o objeto que vai ser exibido no seu dialog : selection="#{meuBean.objetoDialog}"

atributo para atualizar seu dialog : onRowSelectUpdate="idDiaglog"

atributo para abrir automatico seu dialog depois que toda operação acima for completado : onRowSelectComplete="idDialog.show()"

Espero ter ajudado.


#5

cara,

coloca o codigo do seu MB, para poder te ajudar.

o que o amigo falou acima é utilizado qdo vc quer selecionar a linha.

t+


#6

pelo que eu entendi ele que seleciona 1 linha para mostar em um dialog.


#7

nao,

ele quer clicar no botao e abrir o objeto referente aquela linha no modal.

t+


#8

ok foi mal.

martins.segundo debugando oq qndo o metodo eh chamado beanFuncionario.pessoaSelecionada ta null oq acontece,

com o jsf 2 é possivel vc passar parametro ficando assim action="#{beanFuncionario.editarFuncionario(pessoa)}" dae vc altera seu metodo pra ele receber o parametro


#9