Variável JSF

Boa tarde pessoal

Como que eu faço no JSF para criar uma variável no meu managedBean para que eu possa utilizar no meu xhtml? Por exemplo em Servlets & JSP eu faço assim:

// Servlet
request.setAttribute("screenName", "Novo Protocolo");
//JSP
${screenName}

Você estudou mesmo JSF ou está apenas tentando fazer algo sem sequer ter tido o trabalho de ler sobre?

Sim eu estudei, eu não quero que o meu managedBean tenha um atributo screenName e que meu xhtml obtenha ele pelo get explícito. Eu fiz a minha lição de casa :wink:

Não se deixe enganar pelo fato de minha pergunta ser simplista, pode crer que tem algo muito maior por trás.

Se estudou, sabe em qual escopo está colocando e de que forma o EL do JSF obtém as variáveis, não é?

Você leu a minha dúvida?

Eu não quero ter em cada managementBean o código abaixo:


private String screenName;

public void setScreenName(String name) {
name = name;
}

public String getScreenName(){
return name;
}
#{screenName}

Eu quero encontrar uma outra forma de definir isso

[quote=saulo.bsi]Você leu a minha dúvida?

Eu não quero ter em cada managementBean o código abaixo:


private String screenName;

public void setScreenName(String name) {
name = name;
}

public String getScreenName(){
return name;
}
#{screenName}

Eu quero encontrar uma outra forma de definir isso[/quote]
Você mesmo está se subestimando.
Herança resolve isso fácil, fácil.
“Não quero usar herança”. Ok, é um direito seu.
Talvez se você estudar melhor o FacesContext e o ExternalContext possa resolver teu problema, não?
Afinal, você disse que estudou…

saulo.bsi como dsrmachado disse com herança vc resolve isso… faça uma classe pai q todas as outras herdarão dela, assim vc só precisa fazer uma vez… afinal, usar orientação a objeto sem usar um de seus pilares não faz sentido…

Ps.: um bean é extamente uma classe com apenas atributos e getter’s e stter’s… se for tirar isso não esta de acordo com o conceito da parada…

Beleza amigo, obrigado por me ajudar a solucionar o meu problema. Por que não pensei em herança ou polimorfismo.

Se eu quisesse uma “gabiarra mais inteligente” criaria uma interface onde eu teria um método para setar o valor do screenName e todos os meus managementBeans a implementariam. Más OK. Vamos ver alguém tem outra ideia para ajudar. Pense fora da caixinha.

Abraços

[quote=diogogama]saulo.bsi como dsrmachado disse com herança vc resolve isso… faça uma classe pai q todas as outras herdarão dela, assim vc só precisa fazer uma vez… afinal, usar orientação a objeto sem usar um de seus pilares não faz sentido…

Ps.: um bean é extamente uma classe com apenas atributos e getter’s e stter’s… se for tirar isso não esta de acordo com o conceito da parada…[/quote]
No caso, um BackingBean ou ManagedBean tem mais coisas que getters e setters, porém, o acesso padrão a atributos de um MB é feito pelos getters existentes nesta classe.

[quote=saulo.bsi]Beleza amigo, obrigado por me ajudar a solucionar o meu problema. Por que não pensei em herança ou polimorfismo.

Se eu quisesse uma “gabiarra mais inteligente” criaria uma interface onde eu teria um método para setar o valor do screenName e todos os meus managementBeans a implementariam. Más OK. Vamos ver alguém tem outra ideia para ajudar. Pense fora da caixinha.

Abraços[/quote]
Eu diria a você estude, pesquise e pense.
Ajuda muito a resolver problemas como este.

[quote=drsmachado][quote=diogogama]saulo.bsi como dsrmachado disse com herança vc resolve isso… faça uma classe pai q todas as outras herdarão dela, assim vc só precisa fazer uma vez… afinal, usar orientação a objeto sem usar um de seus pilares não faz sentido…

Ps.: um bean é extamente uma classe com apenas atributos e getter’s e stter’s… se for tirar isso não esta de acordo com o conceito da parada…[/quote]
No caso, um BackingBean ou ManagedBean tem mais coisas que getters e setters, porém, o acesso padrão a atributos de um MB é feito pelos getters existentes nesta classe.[/quote]

Sim… concordo… mas vi que além de precisar de ajuda o camarada é ignorante… então deixa quieto… ele quer ajuda mas não tem humildade acho que deveria fazer sozinho… bem fez vc que o mandou estudar… antes tivesse feito o mesmo, mas tento sempre a ajudar e sempre começo pelo simples… mas ele não entendeu desse jeito… então ache outro… vlw ae dsrmachado…

É por isso que a comunidade Java não vai pra frente.
Uns sabem mais que os outros, e infelizmente subestimam o conhecimento e experiência do outro baseado no números de mensagens postadas no fórum.

Abraços Pair programing

[quote=saulo.bsi]É por isso que a comunidade Java não vai pra frente.
Uns sabem mais que os outros, e infelizmente subestimam o conhecimento e experiência do outro baseado no números de mensagens postadas no fórum.

Abraços Pair programing[/quote]

uma simples resposta com educação poderíamos ter aumentado o grau de dificuldade e tinhamos tentado um resolução mais aprofundada, além de ter evitado essas conversinhas que de nada acrecentam… mas como faz questão de destacar que é pós-graduado, não deve precisar de ajuda pra pensar fora da “caixinha”, ainda mais depois de suas respostas…

Vlw XP…

[quote=saulo.bsi]É por isso que a comunidade Java não vai pra frente.
Uns sabem mais que os outros, e infelizmente subestimam o conhecimento e experiência do outro baseado no números de mensagens postadas no fórum.

Abraços Pair programing[/quote]
A comunidade java não vai para frente? Você vive em que época mesmo? Em 1995?
Então vamos lá, diga-nos o que você pesquisou?
Quais as fontes onde procurou?
Qual a dificuldade em conseguir fazer o que quer?
Eu fiz uma única pesquisa no google. No primeiro link disponibilizado pelo retorno da busca encontrei a solução para o problema.
Queria entender qual a dificuldade em fazer isso. Mas acho que pair programming nunca vai chegar ao nível do SCRUM, não é mesmo?

Obrigado a todos, consegui resolver!

Como o nosso camarada saulo.bsi não vai postar a resposta, afinal, ele sabe por que a comunidade java não vai para a frente, resolvi compartilhar a resolução do problema.
Em primeiro lugar, temos que entender que o JSF trabalha de uma forma diferente de um servlet.
Logo, isso

request/session.setAttribute("abc", "abc");

Deve ser adaptado à realidade.
O controle de toda a estrutura do JSF é feito pelo FacesContext, incluindo a árvore de componentes.
Assim sendo, é preciso obter o objeto desejado do FacesContext para, então, termos acesso à inserção de um atributo no mesmo.
Eu irei utilizar o escopo de sessão, obtendo o mapa de atributos da sessão.
Isso pode ser feito assim

Map<String, Object> session = FacesContext.getCurrentInstance().getExternalContext().getSessionMap();

Para inserir um valor no mesmo, preciso apenas invocar o método put:

session.put("atributoQueNaoTemNadaAVer", "Valor do Atributo Que Não Tem Nada a Ver");

Isso me possibilitará ter no FacesContext uma variável de nome atributoQueNaoTemNadaAVer.
Para recuperar seu valor, posso utilizar a EL da seguinte forma:

#{atributoQueNaoTemNadaAVer}

Se estudar um pouquinho, pode conseguir entender o que se passou e como acessar o mapa de atributos de request.

Bele…

Só esperar que ele ponha [RESOLVIDO] no tópico…