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?
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.
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…
public class MenuBean {
private MenuModel model;
public MenuBean() {
model = new DefaultMenuModel();
//First submenu
Submenu submenu = new Submenu();
submenu.setLabel("Dynamic Submenu 1");
MenuItem item = new MenuItem();
item.setValue("Dynamic Menuitem 1.1");
item.setUrl("#");
submenu.getChildren().add(item);
model.addSubmenu(submenu);
//Second submenu
submenu = new Submenu();
submenu.setLabel("Dynamic Submenu 2");
item = new MenuItem();
item.setValue("Dynamic Menuitem 2.1");
item.setUrl("#");
submenu.getChildren().add(item);
item = new MenuItem();
item.setValue("Dynamic Menuitem 2.2");
item.setUrl("#");
submenu.getChildren().add(item);
model.addSubmenu(submenu);
}
public MenuModel getModel() {
return model;
}
}
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?
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?
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 !!