[Resolvido] Pegar valor de um atributo de um componente no Bean

6 respostas
D

Bom noite pessoal, gostaria de saber se tem como eu pegar o valor do atributo de um componente no Bean

por exemplo, tenho o componente

<h:outputLabel value=“Valor do Componente” id=“Id do Componente”/>

da maneira abaixo, consegui pegar o atributo ID, mas como pego o valor do atributo VALUE ???

FacesContext fContext = FacesContext.getCurrentInstance();
String id = UIComponent.getCurrentComponent(fContext).getId();

att

6 Respostas

A

esse seu h:outputLabel é criado dinamico? se nao, vc ta tendo um trabalhaoo atoa e se sim, vc pode navegar pela arvore de componentes do JSF.

t+

D

Bom dia Alissonvla, meu h:outputLabel não está sendo criado dinamicamente, estou tentando pegar o valor deste atributo para usar em uma classe de mensagens de validação.
No exemplo que mencionei antes, citei o atributo value, mas poderia ser outro como por exemplo o “title”.
Como estou iniciando agora a desenvolver com JSF tens como explicar-me como poderia navegar pela arvore de componentes do JSF ?
Outra ideia que time seria usando <f:setPropertyActionListener target="" value="" />, mas ainda não cheguei a aplicá-la, você teria outra sugestão ?
Att

A

Opa bom dia.

Você também poderia tentar utilizar o atributo binding. Assim você tem acesso a todos os atributos desse componente em sua classe java.

exemplo

Na pagina:

<h:outputLabel binding="#{meuManagedBean.label}"

no ManagedBean:

public class MeuManagedBean {

javax.faces.component.html.HtmlOutputLabel.HtmlOutputLabel label;

// get e set

}

Acho que é isso

[]'s

A

cara,

vc nao precisa fazer esse trabalho todo para fazer validação nao, basta vc colocar o compomente h:message para inputtext por exemplo e depois customizar a mensagem.

t+

D

Pessoal, consegui fazer o que precisava com a ajuda do de vocês.
Obrigado

V

Boa Noite Alisson.

Não sei se é o caso, mas vc pode utilizar os diversos escopos do contexto do JSF para compartilhar atributos em sua aplicação. Ex:

FacesContext contexto = FacesContext.getCurrentInstance();
    
    //colocando atributo no escopo da aplicação.
    contexto.getExternalContext().getApplicationMap().put("parametro1", valor);

    //colocando atributo no escopo da sessão
    contexto.getExternalContext().getSessionMap().put("parametro2", valor);

    //colocando atributo no escopo da requisição
    contexto.getExternalContext().getRequestMap().put("parametro3", valor);

    //obtendo atributo do escopo da aplicação
    valor = contexto.getExternalContext().getApplicationMap().get("parametro1");
    
    //obtendo atributo do escopo da sessão
    valor = contexto.getExternalContext().getSessionMap().get("parametro1");

   //obtendo atributo do escopo da requisição
    valor = contexto.getExternalContext().getRequestMap().get("parametro1");

Mas cuidado para escolher o escopo correto, pois dependendo do tamanho de sua aplicação, o desempenho pode ser afetado…

Sugiro vc a estudar melhor os escopos e o ciclo de vida em JSF.

Espero ter ajudado!

Até +!

Criado 10 de novembro de 2011
Ultima resposta 11 de nov. de 2011
Respostas 6
Participantes 4