Boa noite pessoal… nao queria postar isso aqui… mas já venho quebrando cabeça há alguns dias. Desculpem o tamanho do post mas é pra ficar bem explicado. Vamos lá.
Estou usando primefaces no meu projeto e em determinado momento retorno uma lista para meu xhtml.
Primeiro XHTML
<p:dataTable value="#{estoqueVeiculosAPagarBean.listaVeiculosAPagar}" var="veiculo">
<p:column headerText="Modelo">
<h:outputText value="#{veiculo.descricaoModelo}"></h:outputText>
</p:column>
<p:column headerText="Valor">
<h:outputLink value="pagarVeiculo.xhtml" id="ajuda">
<h:outputText value="#{veiculo.totalNotaFabrica}">
<f:convertNumber type="currency" currencySymbol="R$ "
locale="pt_BR" />
</h:outputText>
<f:param name="chassiAPagar" value="#{veiculo.chassiResumido}" />
</h:outputLink>
<!-- clocar mensagem ao passar o mouse -->
<p:tooltip for="ajuda" value="Pagar veículo." showEffect="fade"
hideEffect="fade" />
</p:column>
</p:dataTable>
até aí tudo bem… tudo funciona…
Quando clico em meu outputLink ele me redireciona pra uma tela onde insiro um valor e faço um update no banco…
Segundo XHML
[code]<h:form>
<f:metadata>
<f:viewParam name=“chassiAPagar”
value="#{pagarVeiculoBean.chassiResumido}" />
<s:viewAction action="#{pagarVeiculoBean.carregaVeiculo}" />
</f:metadata>
<h:panelGrid columns=“1”>
<h:outputText
value=“Veiculo: #{pagarVeiculoBean.veiculo.modelo.descricaoModelo}”/>
<h:outputText value=“Chassi: #{pagarVeiculoBean.veiculo.chassi}”/>
</h:panelGrid>
<h:panelGrid columns=“2”>
<h:outputLabel value="Valor:" for="valorPago" />
<h:inputText id="valorPago" value="#{pagarVeiculoBean.veiculo.valorPago}" />
<h:outputLabel value="Observações" for="obsPagamento" />
<h:inputTextarea id="obsPagamento" value="#{pagarVeiculoBean.veiculo.obsPagamento}"/>
<h:commandButton value="Pagar" action="#{pagarVeiculoBean.pagaCarro}" />
<!-- onclick="javascript:window.parent.location.reload(true);"/>-->
</h:panelGrid>
</h:form>[/code]
Logo após o update ele me redireciona pra uma tela de sucesso.
Nao vi necessidade de postar o código referente à persistência porque tudo FUNCIONA!
Agora vem o problema: para tentar deixar mais agradável ao usuario decidi usar o Lightbox do Primefaces… logo, o outputLink de minha primeira pagina xhtml ficou assim.
[code]<p:lightBox iframe=“true”>
<h:outputLink value=“pagarVeiculo.xhtml” id=“ajuda”>
<h:outputText value="#{veiculo.totalNotaFabrica}">
<f:convertNumber type="currency" currencySymbol="R$ "
locale="pt_BR" />
</h:outputText>
<f:param name="chassiAPagar" value="#{veiculo.chassiResumido}" />
</h:outputLink>
<!-- clocar mensagem ao passar o mouse -->
<p:tooltip for="ajuda" value="Pagar veículo." showEffect="fade"
hideEffect="fade" />
</p:lightBox>[/code]
ele faz certinho abre meu segundo xhtml em um iframe… mas agora é que chega o problema… nao consigo fazer o update. Quando clico no meu commandbutton ele gera o erro a seguir:
javax.faces.application.ViewExpiredException: viewId:/pagarVeiculo.xhtml - A exibição de /pagarVeiculo.xhtml não pôde ser restaurada.
Sem o Lightbox funciona perfeitamente. Com o lightbox nao faz o commit… Meu managedBean está como viewScoped só pra constar, mas acredito nao ser o caso, já que em tese, seria redirecionado para outra pagina que nao usa nenhuma informação do bean.
Alguem ja passou por isso?