[JSF] Problema com <f:attribute> e a Expression Language

2 respostas
Ferryman

Eai Pessoal,

Eu to tentando adicionar um atributo de um componente através da tag <f:attribute> usando uma Expression. O problema é que quando eu tento pegar esse atributo, ele vem sempre nulo, e isso não acontece se eu utilizar um valor estatico no value do attribute.
A especificação do jsf diz que o f:attribute aceita EL mas não estou conseguindo fazer funcionar.
Alguem pode me ajudar?

Olhem o código:

<rich:dataTable id="tableMetas" 
		value="#{encaminhamentosManager.encaminhamentos}"
		var="encaminhamento" style="width:100%;"
		onRowMouseOver="this.style.backgroundColor='#CCDDEE'"
		onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'">
		
		<rich:column>
			<h:commandLink value="#{encaminhamento.candidato.nome}" 
				actionListener="#{consultaAlunoManager.avancar}" >
				<f:attribute name="nextMapping" value="buscar_avaliacao"/>
				<f:attribute id="candidato"  name="candidato" 
				value="#{encaminhamento.candidato}"/>
			</h:commandLink>
		</rich:column> 
</rich:dataTable>

E o meu método actionListener

public void avancar(ActionEvent event) {
    FacesContext faces = FacesContext.getCurrentInstance();
    Application app = faces.getApplication();
 
    HtmlCommandLink link = (HtmlCommandLink) event.getComponent();
    String nextMapping = (String) link.getAttributes().get("nextMapping");
 
    //NULL
    Candidato candidato = (Candidato) link.getAttributes().get("candidato");
  }

Valeu pessoal.

Ferry

2 Respostas

icarocd

Estou com o mesmo problema aqui!
Seu problema não é porque o value é dinamico ou estatico, mas sim quanto tipo ao do valor (dinamico) que voce está usando (a sua classe que criou ao inves de String). Aparentemente o f:attribute só aceita value String. Mas, trabalhando-se com servlets, os atributos de request nao sao Object??? Tambem, quando recuperamos o atributo na classe java, ele nao vem como Object e, por isso, precisamos inclusive fazer cast???
Alguem pode ajudar?

A

ola gostaria de saber se alguem conseguiu resolver esse problema pois estou na mesma situacao

Criado 4 de junho de 2007
Ultima resposta 15 de jul. de 2012
Respostas 2
Participantes 3