pessoal como eu posso passar um objeto de uma uma página que tem uma lista de objetos para o detalhe desses objetos??? já fiz de tudo e não estou conseguindo.
Segue meus códigos:
pesquisaContrato.xhtml:
<p:dataTable var="contrato" value="#{pesquisaContratoBean.contratosAnoAtual}" emptyMessage="Não foi encontrado registro!">
<p:column>
<f:facet name="header">
<h:outputLabel value="Contrato" />
</f:facet>
<h:commandLink value="contrato.contrato" action="#{pesquisaContratoBean.editarContrato(contrato)}" >
<f:setPropertyActionListener target="#{contratoBean.contratoTemp}" value="#{contrato}" />
</h:commandLink>
</p:column>
.....
detalhaContrato.xhtml:
<h:form styleClass="form" id="form1">
<p:messages id="messages" autoUpdate="true" closable="true" />
<p:panel>
<p:panelGrid columns="2">
<p:outputLabel for="idContrato" value = "Contrato: "/>
<p:inputText id="idContrato" value="#{contratoBean.contratoTemp.numeroContrato}" readonly="#{!contratoBean.estadoEdicao}"/>
<p:outputLabel for="idAno" value = "Ano: "/>
<p:inputText id="idAno" value="#{contratoBean.contratoTemp.ano}" readonly="#{!contratoBean.estadoEdicao}"/>
<p:outputLabel for="idEmpresa" value = "Empresa "/>
<p:inputText id="idEmpresa" value="#{contratoBean.contratoTemp.empresa}" readonly="#{!contratoBean.estadoEdicao}"/>
<p:outputLabel for="idPregao" value = "Pregão: "/>
......
pesquisaContratoBean.java:
@Controller
@Scope(value = "request")
public class PesquisaContratoBean extends BaseBean {
//private Contrato contratoTemp;
private List<Contrato> listContratos;
private Contrato contratoSelecionado;
//private Contrato2008 c2008= new Contrato2008();
//private Contrato2012 c2012 = new Contrato2012();
//private ContratoInexigibilidade cInexigibilidade = new ContratoInexigibilidade();
public List<Contrato> getContratosAnoAtual(){
int ano = Calendar.getInstance().get(Calendar.YEAR);
setListContratos(listContratos = serviceLocator.getContratoService()
.findContratosAnoAtual(ano));
return getListContratos();
}
@PostConstruct
public void init()
{
System.out.println("PesquisaContratoBean.init()");
}
public String editarContrato(Contrato contrato){ //Contrato contrato){
return "cadastroContrato.jsf?faces-redirect=true";
}
.........
editarContratoBean
@Controller
@Scope(value = "view")
public class ContratoBean extends BaseBean {
private Contrato contratoTemp;
private Contrato contratoSelecionado;
........
O problema é o seguinte:
quando a pessoa clica no commandLind é instanciado um novo contratoBean (eu sei pois debuguei e é chamado o método marcado com @PostConstruct) e seta a propriedade contratoTemp, em seguida é chamado o método marcado com @preDestroy e esse bean é eliminado. em Seguida é criado outro objeto contratoBean (@PostContruct) porém a propriedade Temp está como null.
Obs: os getters and setters já estão lá só ocultei eles.
Alguem tem alguma solução por favor…