Como submeter e buscar parâmetros

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

cara não sei se é por isso, mas acredito que voce tem que trocar o escopo do seu managed bean, como voce esta usando o escopo request.
voce envia a requisição pro servidor carregar a lista, o servidor devolve o html pronto com a tabela e a lista de objetos vai pro lixo. ai quando voce tenta acessar o objeto selecionado ele nao consegue encontrar. pra resolver o problema voce usa o escopo viewScoped ao inves do requestScoped, assim os dados ficam na memória até que voce feche a página.
tenta trocar e ve se resolve

Oi Mateus,

Obrigado pela sugestão. No entanto, após ler este artigo percebi que uso JSF 1.2 e não JSF 2, então não tenho como usar @viewScoped.

Teria uma sugestão de como resolver isso usando JSF 1.2?

Obrigado,
Felipe

Putz vou ficar te devendo essa amigo, não sou o cara do jsf, acredito que alguem aqui vai ter a solução pro teu caso…
Mas so por questão de curiosidade, o que te impede de migrar pra jsf 2?

[quote=mateusviccari]Putz vou ficar te devendo essa amigo, não sou o cara do jsf, acredito que alguem aqui vai ter a solução pro teu caso…
Mas so por questão de curiosidade, o que te impede de migrar pra jsf 2?[/quote]

Comecei a desenvolver o site usando JSF 1.2, e não sei dizer quanto retrabalho eu teria pra migrar tudo para JSF 2 agora. Por isso continuo usando JSF 1.2.

Alguém teria uma dica?

Valeu!
Felipe

Isto está em inglês, mas ajuda

[quote=drsmachado]Isto está em inglês, mas ajuda
[/quote]
Dei uma olhada por cima, e parece ser um excelente artigo. Vou tentar converter pra JSF 2 primeiro quando eu chegar em casa, daí vejo se consigo corrigir o problema.

Já que estou aprendendo JSF, não faz sentido algum estudar uma coisa obsoleta :slight_smile:

Valeu pelas dicas, pessoal.