Olá pessoal, gostaria de um help.
Tenho uma pagina jsp chamada pesquisarAutor que pesquisa os autores no banco e lista em uma h:dataTable na mesma tela conforme trecho de código:
<!-- demais código omitido -->
<rich:panel rendered="#{!empty autorMB.autores}" styleClass="panel" headerClass="header">
<f:facet name="header">
<h:outputLabel value="#{msg.autoresCadastrados}"/>
</f:facet>
<h:dataTable value="#{autorMB.autores}" var="autor" headerClass="cabecalho" rowClasses="linha1,linha2" columnClasses="col1, col2, col3, col4">
<h:column>
<f:facet name="header"><h:outputText value="#{msg.codigo}"/></f:facet>
<h:outputText id="codigo" value="#{autor.id}"/>
</h:column>
<h:column>
<f:facet name="header"><h:outputText value="#{msg.nome}" /></f:facet>
<h:outputText id="nome" value="#{autor.nome}"/>
</h:column>
<h:column>
<f:facet name="header"><h:outputText value="#{msg.editar}" /></f:facet>
<h:commandLink value="#{msg.editar}" action="editarAutor"/>
</h:column>
<h:column>
<f:facet name="header"><h:outputText value="#{msg.excluir}" /></f:facet>
<h:commandLink value="#{msg.excluir}" action="#{autorMB.excluir}"
onclick="return confirm('Deseja realmente excluir ?');">
</h:commandLink>
</h:column>
</h:dataTable>
</rich:panel>
</a4j:form>
<!-- demais código omitido -->
Uma das colunas da linha eu tenho um h:commandLink para editar um autor. A sua action (action=“editarAutor”) chama a página editarAutor.jsp conforme o faces-config:
<navigation-case>
<from-outcome>editarAutor</from-outcome>
<to-view-id>/editarAutor.jsp</to-view-id>
<redirect/>
</navigation-case>
A página é redirecionada e nela tento pegar os valores dessa forma:
<rich:panel styleClass="panel" headerClass="header">
<f:facet name="header">
<h:outputLabel value="#{msg.atualizaAutor}"/>
</f:facet>
<table width="70%" align="center">
<tr>
<td>
<h:outputLabel styleClass="label" value="#{msg.codigo}"/>
</td>
<td>
<h:inputText size="10" value="#{autorMB.autor.id}" disabled="true">
</h:inputText></td>
</tr>
<tr>
<td><h:outputLabel styleClass="label" value="#{msg.nome}"/></td>
<td><h:inputText size="60" value="#{autorMB.autor.nome}"/></td>
</tr>
<tr>
<td colspan="2" align="center"><h:commandButton value="#{msg.salvar}" styleClass="button" action="#"/></td>
</tr>
</table>
</rich:panel>
</a4j:form>
No faces-config defini o meu managedbean autorMB, e na minha classe tenho a propriedade autor do tipo classe Autor conforme código:
<managed-bean>
<managed-bean-name>autorMB</managed-bean-name>
<managed-bean-class>br.com.ppd.managedbean.AutorMB</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
public class AutorMB implements Serializable{
private Autor autor = new Autor();
public Autor getAutor() { return autor; }
public void setAutor(Autor autor) {
this.autor = autor;
}
@Entity
@Table(name="autor", schema="ppd")
@SequenceGenerator(name="seq_autor", sequenceName="id")
public class Autor implements Serializable{
@Id
@GeneratedValue(strategy=GenerationType.AUTO, generator="seq_autor")
private Long id;
@Column(name="descricao")
private String nome;
A questão é que não consigo pegar o valor de id e nome de autor. Estou usando o <a4j:keepAlive beanName=“autorMB”/> para poder manter o valor de autorMB após o redirecionamento da página.
Alguém tem alguma sugestão?
Desde já agradeço.