[RESOLVIDO] - Problema com JSF + Primefaces + Datagrid + <p:commandButton>

Consegui entrar no método utilizando <p:remoteCommand>

Ficou assim:

<p:commandButton type="button" onclick="carrega()" id="btnLoad" value="Saiba Mais..." />

e meu remoteCommand:

<p:remoteCommand name="carrega" actionListener="#{artigoController.montaVisualizacao}"/>

Porém chamando pelo remoteCommand ele não carrega os valores da linha que eu selecionei e acionei meu button…

Pelo menos o método carregou, agora tentando pegar os valores, se alguém tiver uma sugestão, fico grato kkk

coloquei um <f:setPropertyActionListener target="#{artigoController.artigo}" value="#{artigo}" />

Mas minha página retorna em branco e em debug meu parametros estão nulls

Isso me parecer ser um problema de escopo de sessão, inclusive já tive problemas semelhantes. Tem que tomar cuidado quando inserir componentes com action (commandButton, commandLink e derivados) dentro de componentes que trabalham com coleções (dataGrid, ring, dataTable, ui:repeat) porque ao fazer a requisição a lista já está vazia.

Se você colocar em sessionScoped deve funcionar, ou mude seu método do get para montar novamente a lista se ela for nula.

Segue dois links que explicam mais profundamente:


Exatamente Marcos,

Acabei de resolver aqui mas não da forma mais elegante podemos dizer, eu consegui chamar minha Action por remotecommand mas não conseguia passar meu parametro.

O que fiz foi fazer uma bela de uma gambiarra aqui.

O que fiz foi trazer a ID do meu artigo escondida dentro do meu link… ficou mais ou menos assim:

<a href="minhapagina...." rel="#{artigo.caminhoArtigo}" onclick="carregaPagina(this)" >

Jogo meu rel dentro do meu value de um input hidden e mando por get mesmo para minha outra página e la faço o tratamento etc…

Bom meu problema foi resolvido mas não da forma mais elegante, mas vou dar uma boa olhada nos links que me passou mas acredito que o maior problema seja esse mesmo que você falou.

Obrigado a todos que ajudaram aqui.

Isso me parece ser um problema de escopo de sessão, inclusive já tive problemas semelhantes. Tem que tomar cuidado quando inserir componentes com action (commandButton, commandLink e derivados) dentro de componentes que trabalham com coleções (dataGrid, ring, dataTable, ui:repeat) porque ao fazer a requisição a lista já está vazia.

Se você colocar em sessionScoped deve funcionar, ou mude seu método do get para montar novamente a lista se ela for nula.

Segue dois links que explicam mais profundamente: