Olá, pessoal.
Eu estou desenvolvendo uma aplicação JSF utilizando MyFaces.
Tenho uma página que contém uma lista de alunos, e ao clicar no nome do aluno eu estou tentando fazer redirecionar para outra página, onde é possível ver mais detalhes sobre o aluno e também alterar dados.
Só que em vez de ir para a página de detalhe, está apenas recarregando a página de listagem.
Esse é o conteúdo relevante do form na página alunolista.jsp:
<h:form id="formAluno">
<h:dataTable value="#{escolaBean.listaAlunos}" var="a" styleClass="escola-tabela" headerClass="escola-cabecalho" rowClasses="escola-ultimo, escola-primeiro">
<h:column>
<f:facet name="header"><h:outputText value="#{msg.nome}"/></f:facet>
<h:commandLink id="cmdLinkAlunoDetalhe" action="#{escolaBean.doAlunoDetalhe}" value="#{a.nome}">
<f:param name="codigo" value="#{a.codigo}"/>
</h:commandLink>
</h:column>
<!-- Outras colunas aqui -->
</h:dataTable>
</h:form>
Este é o conteúdo relevante em minha bean:
public class EscolaBean {
private Long codigo;
private Aluno aluno;
public void setCodigo(Long codigo) {
this.codigo = codigo;
}
public String getCodigo() {
FacesContext context = FacesContext.getCurrentInstance();
ExternalContext extContext = context.getExternalContext();
Map<String, String> params = extContext.getRequestParameterMap();
return params.get("codigo");
}
public void setAluno(Aluno aluno) {
this.aluno = aluno;
}
public Aluno getAluno() {
return this.aluno;
}
public String doAlunoDetalhe() {
setAluno(AlunoDAO.pesquisar(getCodigo()));
return "alunoDetalhe";
}
}
Este é o conteúdo relevante em meu faces-config.xml:
<managed-bean>
<managed-bean-name>escolaBean</managed-bean-name>
<managed-bean-class>com.fkraemer.backingbeans.EscolaBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<navigation-rule>
<description>Fluxos à partir da página Listagem de Alunos</description>
<from-view-id>/pages/escola/escolaalunos.jsp</from-view-id>
<!-- Clicou no link do nome para acessar a página de detalhe -->
<navigation-case>
<from-outcome>alunoDetalhe</from-outcome>
<to-view-id>/pages/escola/escolaalunodetalhe.jsp</to-view-id>
</navigation-case>
</navigation-rule>
Eu coloquei um breakpoint no método doAlunoDetalhe() e inicio em modo debug, mas o método nem sequer é chamado.
Teria como alguém me ajudar a encontrar a agulha no palheiro, ou então me mostrar uma outra forma de fazer isso?
Muito obrigado de antemão,
Felipe