estou tentando implementar um LazyDataModel, só que estou com alguns problemas, o LazyDataModel não funciona corretamente quando utilizo RequestScoped, na tabela tenho um commandButton para excluir um item, ao clicar no botão a action não é chamada quando o scope é request, se eu utilizar o mesmo código e mudar para SessionScoped funciona perfeitamente, alguém já passou por isso?
Já procurei na net algo relacionado mas até agora não encontrei nada, tentei tbm remover o lazydatamodel e retornar um List para o dataTable usando escopo resquest, pra ver no que dava funcionou sem problema, só não funciona quanto utilizo o lazy.
alguma ajuda?
cidade_list.xhtml<p:dataTable id="tabelaCidade"
value="#{cidadeBean.cidadeLazy}"
var="cidade"
paginator="true"
rows="5"
paginatorPosition="bottom"
currentPageReportTemplate="({currentPage} de {totalPage})"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}">
<f:facet name="header">
<h:outputText value="Lista de Cidades" />
</f:facet>
<p:column>
<f:facet name="header">
<h:outputText value="Nome" />
</f:facet>
<h:outputText value="#{cidade.nome}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Estado" />
</f:facet>
<h:outputText value="#{cidade.estado.nome}" />
</p:column>
<p:column style="width: 200px;">
<f:facet name="header">
<h:outputText value="Ações" />
</f:facet>
<p:button id="botaoEditar"
value="Editar"
title="Editar"
icon="ui-icon-pencil"
outcome="cidade_edit">
<f:param name="id" value="#{cidade.id}"/>
</p:button>
<p:commandButton title="Excluir"
value="Excluir"
icon="ui-icon-trash"
action="#{cidadeBean.remover}">
<f:setPropertyActionListener target="#{cidadeBean.cidade}" value="#{cidade}"/>
</p:commandButton>
</p:column>
</p:dataTable>
CidadeBean.java
@Named
@RequestScoped
public class CidadeBean implements Serializable {
@EJB
private CidadeFacade cidadeFacade;
private Cidade cidade;
private CidadeLazy cidadeLazy;
public CidadeBean() {
}
public void remover() {
if (cidade != null) {
cidadeFacade.remover(cidade);
}
}
public CidadeLazy getCidadeLazy() {
if (cidadeLazy == null) {
cidadeLazy = new CidadeLazy(cidadeFacade);
}
return cidadeLazy;
}
public Cidade getCidade() {
return cidade;
}
public void setCidade(Cidade cidade) {
this.cidade = cidade;
}
Quando clica no botão Excluir não chama o método remover() de nenhum jeito, já tentei tbm usar actionListener no lugar de action a tbm não funcionou.
Como resolver isso? Será algum bug do prime?