Estou montando um menu dinâmico no primefaces (menubar), porém, na propriedade value eu preciso colocar uma expression #{Bean.qualquerCoisa}, só que não consigo fazer aparecer de jeito nenhum esse valor, no meu Bean, o valor dela retorna algo do banco, uma string no caso, mas no menu não aparece essa String, fica em branco apenas.
Como devo fazer?
Posta aí a página e sua ManagedBean para tentar te ajudar…
C
Cesar_Pizolato
Estou sem o fonte agora, mas fica assim:
Web
<p:menubar model="#{MenuBean.menubar}" />
Bean
menubar.setValue("");
menubar.setValueExpression("");
Não sei o que setar, se é no Value ou ValueExpression, se eu fizer direto em um dos dois value="#{LanguageBean.getTexto(‘TXT_TESTE’)}" ele pega como String.
Precisaria que no Value saísse o retorno de LanguageBean.getTexto(‘TXT_TESTE’) entendeu?
Acredito que devo usar ValueExpression, porém já fiz vários testes com ele e exemplos que encontrei, mas não funciona, o value do menu fica em branco.
vi-gb
Tenta asim:
ValueExpression value = FacesContext.getCurrentInstance().getApplication()
.getExpressionFactory().createValueExpression(FacesContext.getCurrentInstance().getELContext(),
"#{meuBean.meuMetodo}", this.getClass());
caputojf1
Não sei se vai te ajudar muito…
Também não estou com o código aberto aqui para te mandar exatamente o que fiz…mas lembro que no site de suporte do primefaces achei o preenchimento do model e me ajudou…
Espero que te ajude…
ValueExpression value = FacesContext
.getCurrentInstance()
.getApplication()
.getExpressionFactory()
.createValueExpression(
FacesContext.getCurrentInstance().getELContext(),
"#{IdiomaController.getTexto('TXT_PORFAVOR')}",
this.getClass());
//mi.setValueExpression("value", value);
mi.setValue(value);
Devo usar no setValueExpression ou no setValue? Ambos dão erro de cast: “ValueExpressionImpl cannot be cast to java.lang.String”, fiz algo errado?
vi-gb
Acho que vc nao pode passar parametros, pode?
C
Cesar_Pizolato
Posso sim, se eu fizer isso pelo xhtml normal funciona, exemplo:
Alias, uso em vários lugares isso, e já fiz um teste montando o MenuBar manualmente pelo xhtml e funcionou também.
vi-gb
Troque o this.getClass() por String.class
C
Cesar_Pizolato
Estava testando isso agora, rsrsrsrsrs… Testei com String.class e Object.class, com nenhum dos 2 ele dá erro, porém fica em branco o valor na web… mesmo eu fazendo ao invez do #{…} uma string qualquer “TESTE” fica em branco também. Idéia?
C
Cesar_Pizolato
É, já testei de várias formas assim e não vai. Alguma tem alguma outra idéia? Obrigado.
C
Cesar_Pizolato
Alguem ajuda?
vi-gb
Não tenho outra não, posta seu codigo pra eu ver.
C
Cesar_Pizolato
Vi, muito obrigado, eu consegui resolver ontem anoite.
Não entendi muito bem o porque, mas, se eu fizer o serID("") antes do setValueExpression("") ele funciona, no meu código estava depois por desatenção, não entendi muito bem a lógica de não funcionar ao contrário, massssssssss… rsrsrsrs. Excelente que funcionou !!