Vou colocar meu problema todo para ajudar vocês a me ajudar, seguinte, na minha aplicação tem dois menus, um menu superior, e um menu que interage com os objetos da aplicação, é aonde eu seto minhas ações como incluir e excluir editar salvar, e esse menu tem que ser montado toda hora, quando eu inicio a aplicação esse menu vem vazio, porque eu ainda não sei o que eu vou fazer, agora se eu clico no menu superior por exemplo em Usuario, ele abre um jsp de listagem de usuario, e na parte superior da jsp aparece esse menu que foi remontado, ou melhor, era para aparecer, problema é o seguinte, ele não da atualizando a tag rich:toolbar com o binding, eu eu já debugei e tenho certeza que ele ta colocando no HtmlToolbar o menu dropDown e seus HtmlmenuIte.
Codigo que está na jsp que chama esse menu que é montado toda vez para atualizar minhas açoes d acordo com o objeto .
<a4j:form >
<a4j:outputPanel id="menuAcaoConteudo2">
<a4j:region rendered="#{workflowMenuAcaoMB.menuAcaoState}" >
<div align="right">
<rich:toolBar style="width: 200px;" width="50%" binding="#{workflowMenuAcaoMB.menuAcao}" />
</div>
</a4j:region>
</a4j:outputPanel>
</a4j:form>
Codigo do MB que manipula esse menuAcao
[code] private HtmlToolBar menuAcao;
private String managedBean;
private String classeMB;
public WorkflowMenuAcaoFaces(){
menuAcao = new HtmlToolBar();
}
//Metodo recebendo meu objeto + usuarioLogado
//pego a fase, classe e managedBean
public void montaMenuAcao(HtmlToolBar menuAcao,String managedBean, String classeMB){
menuAcao.getChildren().clear();
//pega o managedBean
if(managedBean!=null){
Object faces = null;
if(classeMB == null){
faces = JsfUtil.getManagedBean(managedBean);
}else{
JsfUtil.instanciaManagedBean(managedBean,classeMB);
faces = JsfUtil.getManagedBean(managedBean);
}
//pega o metodo do objeto
Method metodoObjetoControlado = JsfUtil.getMetodoObjeto("getObjetoControlado", faces);
Method metodoCurrentState = JsfUtil.getMetodoObjeto("getCurrentState", faces);
//Chamamos o método getObjetoControlado de cada Face (todos terao um metodo desse)
Object objetoControlado = null;
String currentState = null;
if (metodoObjetoControlado != null){
//invoca metodo que pega o objetoControlado
objetoControlado = JsfUtil.invocarMetodoObjeto(metodoObjetoControlado, faces);
//invoca o metodo que pega o currentState
currentState = (String)JsfUtil.invocarMetodoObjeto(metodoCurrentState, faces);
//lista as fasesAcao e constroi o menu
List<FaseAcaoTO> faseAcoes = workFlowService.listarFaseAcao(objetoControlado, currentState, getUsuarioLogado());
if(faseAcoes.size() > 0){
constroiMenuAcao(menuAcao, faseAcoes);
}
}
}
}
public HtmlToolBar getMenuAcao() {
if (menuAcao != null && menuAcao.getChildCount() > 0){
return menuAcao;
}
return null;
}
public void setMenuAcao(HtmlToolBar menuAcao) {
montaMenuAcao(menuAcao, getManagedBean(), getClasseMB());
this.menuAcao = menuAcao;
}
public boolean isMenuAcaoState(){
if (menuAcao != null && menuAcao.getChildCount() > 0){
return true;
}
return false;
}
public String getManagedBean() {
return managedBean;
}
public void setManagedBean(String managedBean) {
this.managedBean = managedBean;
}
public String getClasseMB() {
return classeMB;
}
public void setClasseMB(String classeMB) {
this.classeMB = classeMB;
}[/code]
Tá foda, to só dependendo disso pra continuar a fazer minha aplicação, detalhe, essa classe é chamada por um listerner que esta ligada a todos os menus que estão no menu superior, que é estatico na aplicação montado uma vez fica até deslogar, esse MB que manipula o menuAcao é de sessão! Obrigado