Primefaces: p:dataTable + p:confirmDialog [Resolvido]

4 respostas
I

Bom dia,
Tenho uma dataTable com um botão pra excluir, quando eu clico no botão ele chama meu manageBean e salva a referência da linha selecionada (até ai tudo certinho) o problema surge quando abre meu confirmDialog e clico no botão ‘SIM’, quando faço isso a minha classe manageBean da um reload e perco a minha referência da linha selecionada.

Se alguém puder tentar me dar umas dicas…

my xhtml

<f:form prependId=“false”>

<p:dataTable id=“expeditionNoteView”

style=“text-align: center;”

paginator=“true”

paginatorPosition=“botton”

widgetVar=“expeditionNoteView”

var=“expeditionNote”

value="#{indexBean.resultFluxosSearch}">

<p:column headerText=“Ptcl Envio”>

<h:outputText value="#{expeditionNote.nuPtclEnvioMsgeEmsr}" />

</p:column>

<p:column headerText=“Pátio Origem”>

<h:outputText value="#{expeditionNote.patioOrigem.sgPatioFrvr} - “/>

<h:outputText value=”#{expeditionNote.patioOrigem.nmPatioFrvr}" />

</p:column>

<p:column headerText=“Terminal Origem”>

<h:outputText value="#{expeditionNote.terminalOrigem.nmTermFrvr}" />

</p:column>

<p:column headerText=“Pátio Destino”>
<h:outputText value="#{expeditionNote.patioDestino.sgPatioFrvr} - " />

<h:outputText value="#{expeditionNote.patioDestino.nmPatioFrvr}" />

</p:column>

<p:column headerText=“Terminal Destino”>

<h:outputText value="#{expeditionNote.terminalDestino.nmTermFrvr}" />

</p:column>

<p:column headerText=“Estado Envio”>

<h:outputText value="#{expeditionNote.icStatMsgeEltc}" />

</p:column>

<p:column headerText=“Tipo Envio”>

<h:outputText value="#{expeditionNote.icTipoMsgeEltc}" />

</p:column>

<p:column headerText=“Forma Envio”>

<h:outputText value="#{expeditionNote.icFormaRbtoMsgeEltc}" />

</p:column>

<p:column headerText=“Versão”>

<h:outputText value="#{expeditionNote.nuVersMsgeEltc}" />

</p:column>

<p:column headerText=“Ptcl Recebimento”>

<h:outputText value="#{expeditionNote.nuPtclRbtoMsgeEltc}" />

</p:column>

<p:column headerText=“Fluxo Transporte”>

<h:outputText value="#{expeditionNote.fluxoTransporte.nuFluxoTrpt}" />

</p:column>

<p:column>

<h:commandLink action=“fluxoVisualizacao” actionListener="#{indexBean.defineNota()}">

<h:graphicImage value=“imagens/view.png” alt=“Visualizar” title=“Visualizar” style=“border: none” />

</h:commandLink>

</p:column>

<p:column>

<h:commandLink action=“fluxos”

actionListener="#{indexBean.defineNota()}">

<h:graphicImage value=“imagens/edit.png” alt=“Editar” title=“Editar” style=“border: none” />

</h:commandLink>

</p:column>

<p:column>

<p:commandLink actionListener="#{indexBean.rowToDelete}"

onclick=“confirm.show()”

immediate=“true”>

<h:graphicImage value=“imagens/delete.gif” alt=“Excluir” title=“Excluir” style=“border: none” />

</p:commandLink>

</p:column>

</p:dataTable>

</p:panel>

<p:confirmDialog message=“Tem certeza que deseja excluir o registro?”

header = “Excluir registro” severity=“alert” widgetVar=“confirm”>

<p:commandButton value =“YES”

actionListener="#{indexBean.deleteNote}"

onclick=“confirm.hide()”

immediate=“true”

update=“panelResultSearch”>

</p:commandButton>

<p:commandButton value =“NO” onclick=“confirm.hide();”/>

</p:confirmDialog>

</h:form>
my ManageBean:

@ManagedBean(name = “indexBean”)

@RequestScoped

public class IndexBean implements Serializable {
private AtributosPesquisa atributosPesquisa = new AtributosPesquisa();

private DataModel resultFluxos;

private List resultPatioFerroviario;

private List listMensagem;

private RecebimentoNota recebimentoNota;
public IndexBean() {

System.out.println(“AAAAAAAA”);

System.out.println(“BBBBBBBB”);

}
public RecebimentoNota getRecebimentoNota() {

return recebimentoNota;

}
public void setRecebimentoNota(RecebimentoNota recebimentoNota) {

this.recebimentoNota = recebimentoNota;

}
public void rowToDelete() {

recebimentoNota = (RecebimentoNota) resultFluxos.getRowData();

}
public void deleteNote() {

RecebimentoNotaDao dao = new RecebimentoNotaDao();

try {

dao.destroy(recebimentoNota.getPid());

} catch (NonexistentEntityException ex) {

ex.printStackTrace();

}

getResultFluxosSearch();

}
public DataModel getResultFluxosSearch() {

RecebimentoNotaDao recebimentoNotaDao = new RecebimentoNotaDao();

resultFluxos = new ListDataModel(recebimentoNotaDao.findResultNotaSearch(atributosPesquisa));

return resultFluxos;

}

}

Espero ter conseguido descrever meu problema,

Grato pela atenção

4 Respostas

A

Dica: coloca o código formatado, assim fica mais fácil ajudar :slight_smile:

Tenta mudar de @RequestScoped para @ViewScoped o ManagedBean. Com request a referencia do objeto não se mantém.

M

Oi!!

Quando for postar codigo use os botões “" e depois coloca o código e no final do código coloca"”, é este botões que ficam ai em cima. ai fica muis fácil de ver o seu código, e antes de enviar vc pode vizualizar.

Até mais,

Marlise.

I

Primeiramente me desculpem pela formatação, meu primeiro post aqui e espero que entendam.

ayslanms: Muito obrigado pela dica, com essa alteração funcionou, agora tenho que mostrar pro analista que me passa as demandas pra ver se ele aceita… (burocracia pra mudar essas coisas)

Mertz: Obrigado pela dica.

Grato pela atenção,
Iuri Matos

M

Imagina eu também apanhava , ai um dia eu usei os botões e vizualizei ai entendi como funciona mas tem que abrir e depois fechar.

Até mais,

Marlise.

Criado 7 de outubro de 2011
Ultima resposta 7 de out. de 2011
Respostas 4
Participantes 3