Seam - Menu dinâmico

1 resposta
Marques

Colegas,

Tinha um menu dinâmico com jsf puro e agora preciso fazer o mesmo usando o seam.
Pois bem, na classe abaixo se coloco a anotação "@In EntityManager em" quando clico no botão Proceed recebo a exception:
[color=red]
SEVERE: JSF1054: (Phase ID: RESTORE_VIEW 1, View ID: /homeAdmin.xhtml) Exception thrown during phase execution: javax.faces.event.PhaseEvent[source=com.sun.faces.lifecycle.LifecycleImpl@73efe4ac]
[/color]
Sem a anotação "@In EntityManager em" o menú é renderizado porém não executa "minhaAction.doAnyting"

Onde estou errando? A propósito vc tem um exemplo de um menú dinâmico (buscando os itens do banco de deados) que rode no seam?

Muito obrigado,

Marques

<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
	xmlns:s="http://jboss.com/products/seam/taglib"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:a4j="http://richfaces.org/a4j"
	xmlns:rich="http://richfaces.org/rich"
	template="layout/templateAdmin.xhtml">

	<ui:define name="right">
		<h:form>
			<h:panelGrid columns="1">
				<rich:panelMenu style="width: 175px;" mode="node"
					expandSingle="true" iconExpandedGroup="disc"
					iconCollapsedGroup="disc" iconExpandedTopGroup="chevronUp"
					iconGroupTopPosition="right" iconCollapsedTopGroup="chevronDown"
					binding="#{testeMenu.menu}">			
				</rich:panelMenu>

				<h:commandButton id="proceed" value="Proceed"
					action="#{testeMenu.sayHello}" />
			</h:panelGrid>
		</h:form>
	</ui:define>
</ui:composition>
@Name("testeMenu")
public class TesteMenu implements Serializable{
	
	@In
	EntityManager em;
	
	@In
	FacesContext facesContext;
	
	
	private HtmlPanelMenu menu;
	private HtmlPanelMenuGroup group;
	private HtmlPanelMenuItem item;
	
	@Create
	public void buildMenu() {
		Application app = facesContext.getApplication();
		menu = (HtmlPanelMenu) app.createComponent(HtmlPanelMenu.COMPONENT_TYPE);
		group = (HtmlPanelMenuGroup) app.createComponent(HtmlPanelMenuGroup.COMPONENT_TYPE);
		item = (HtmlPanelMenuItem) app.createComponent(HtmlPanelMenuItem.COMPONENT_TYPE);
		
		group.setLabel("Grupo");
		item.setLabel("Item");
		item.setName("1");
		
		item.setActionExpression(getOutcome("minhaAction.doAnyting"));
		group.getChildren().add(item);
		
		menu.getChildren().add(group);
		//Codigo onde acesso o banco para popular menu que substituirá essas linhas de teste acima
		
	}
	
	public MethodExpression getOutcome(String outcome) {
		FacesContext fc = FacesContext.getCurrentInstance();
		ELContext ec = fc.getELContext();
		return fc
				.getApplication()
				.getExpressionFactory()
				.createMethodExpression(ec, "#{" + outcome + "}", String.class,
						new Class[] {});
	}
	
	public void sayHello() {
    	System.out.println("Hello People");
    }

	public HtmlPanelMenu getMenu() {
		return menu;
	}

	public void setMenu(HtmlPanelMenu menu) {
		this.menu = menu;
	}	
}

1 Resposta

Marques

Ninguém???

Criado 29 de janeiro de 2011
Ultima resposta 30 de jan. de 2011
Respostas 1
Participantes 1