JSF Ifs com objetos da página

2 respostas
B

É o seguinte...

Venho de anos de criação de páginas direto com jsp (usando struts)
Estou migrando para JSF e estou tendo muita dificuldade para interagir alguma informação com os elementos da página.
Exemplo simples:

Quero alterar um class de uma tag em relação ao ID que vem da url. No modelo que já estou acostumado, é só fazer algo como:
<li class="<%if(request.getParameter("param").equals("algo"){out.print("ativo");}%>">
  Alguma coisa....
</li>

Pra fazer isso num arquivo XHTML estou perdidinho!

2 Respostas

Rodrigo_Sasaki

Eu imagino que seja melhor fazer isso do lado do ManagedBean, evitando ter esse tipo de lógica no seu XHTML, que é uma má prática quando falamos de JSF.

Seu xhtml ficaria assim:
<li class="#{meuMB.style}">  
    Alguma coisa....  
</li>
E no seu managed bean algo assim:
public String getStyle(){
    //Seu código para descobrir qual o estilo correto
}
Para ter acesso ao mapa de parâmetros do request direto do ManagedBean pode fazer assim:
FacesContext ctx = FacesContext.getCurrentInstance();
ExternalContext externalCtx = ctx.getExternalContext();
Map<String, String> params = externalCtx.getRequestParameterMap();
Aí o resto fica fácil :)
B

Valeu Rodrigo!

Tinha pensado nisso, mas achei que seria um pouco de gambiarra. Meu conceito era que o ManagedBean fosse apenas para manipular os dados de post e leitura de conteúdo que vinha do banco.

Na verdade então acaba sendo um pouco do mesmo conceito do .net…

Mais uma vez obrigado!

Criado 23 de julho de 2013
Ultima resposta 24 de jul. de 2013
Respostas 2
Participantes 2