hi everybody I'm currently facing a strange pb between Tomahawk and Jboss Seam. It looks like NavigationMenuItem[] object returned by my Stateless Bean lose some cast information's when it's handled by NaviagtionMenuUtils class of tomahawk package.
My test configuration is : a superMenu.jsp contains a JsCookMenu tag that dynamically get menu items from a stateless bean. my software cfg: Jboss is 4.04.GA Seam is 1.0.1 MyFaces 1.1.3 Tomahawk 1.1.3 Linus RH Enterpise 4.XX JDK Sun 1.5.0_05-b05 my Stateless Bean source taht returns the array of NavigationMenuItem: | import static org.jboss.seam.ScopeType.STATELESS; | import java.io.Serializable; | import org.jboss.seam.annotations.*; | import org.jboss.seam.log.Log; | | import org.apache.myfaces.custom.navmenu.NavigationMenuItem; | | @Name("mainMenu") | @Scope(STATELESS) | public class MainMenu implements Serializable | { | @Logger | private Log log; | | public MainMenu() | { | } | | public NavigationMenuItem[] getNavItems() { | NavigationMenuItem[] navItems=new NavigationMenuItem[2]; | navItems[0]=new NavigationMenuItem("Item 1 Label","action1"); | navItems[1]=new NavigationMenuItem("Item 3 Label","action3"); | System.out.println("produced class name="+navItems.getClass().getName()); | return navItems; | } | } | my jsp source wich invoke mainMenu.navItems <?xml version="1.0" encoding="UTF-8" ?> | <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> | <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> | <%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t"%> | <%@ page language="java" contentType="text/html; charset=UTF-8" | pageEncoding="UTF-8"%> | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | <html> | <head> | <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> | <!-- JSCook Menu --> | <script language="JavaScript" src="jscookmenu/JSCookMenu.js" type="text/javascript"> | </script> | <script language="JavaScript" src="jscookmenu/ThemeOffice/theme.js" type="text/javascript"> | </script> | <link rel="stylesheet" href="jscookmenu/ThemeOffice/theme.css" type="text/css"/> | <script language="JavaScript" src="jscookmenu/ThemeIE/theme.js" type="text/javascript"> | </script> | <link rel="stylesheet" href="jscookmenu/ThemeIE/theme.css" type="text/css"/> | <title>Insert title here</title> | </head> | <body> | <f:view> | <h:form> | <t:jscookMenu id="menu2" layout="hbr" theme="ThemeIE"> | <t:navigationMenuItems value="#{mainMenu.navItems}" /> | </t:jscookMenu> | </h:form> | </f:view> | </body> | </html> | part of org.apache.myfaces.custom.navmenu.NaviagtionMenuUtils (addNavigationMenuItems method) class that I decorated with a System.out.println in order to make simple checking and follow progress of objects in Eclipse debugger. | public static void addNavigationMenuItems(UISelectItems child, List list) | { | Object value = child.getValue(); | System.out.println("returned class name="+value.getClass().getName()); | | if (value instanceof NavigationMenuItem) | { | list.add(value); | } | else if (value instanceof NavigationMenuItem[]) | { | for (int i = 0; i < ((NavigationMenuItem[])value).length; i++) | { | list.add(((NavigationMenuItem[])value)); | } | } | else if (value instanceof Collection) | { | for (Iterator it = ((Collection)value).iterator(); it.hasNext();) | { | Object item = it.next(); | if (!(item instanceof NavigationMenuItem)) | { | FacesContext facesContext = FacesContext.getCurrentInstance(); | throw new IllegalArgumentException("Collection referenced by UINavigationMenuItems with id " + child.getClientId(facesContext) + " does not contain Objects of type NavigationMenuItem"); | } | list.add(item); | } | } | else | { | FacesContext facesContext = FacesContext.getCurrentInstance(); | throw new IllegalArgumentException("Value binding of UINavigationMenuItems with id " + child.getClientId(facesContext) + " does not reference an Object of type NavigationMenuItem, NavigationMenuItem[], Collection or Map"); | } | } | exception returned is : | 2006-06-29 15:55:42,367 DEBUG [org.jboss.seam.jsf.SeamVariableResolver] resolving name: mainMenu | 2006-06-29 15:55:42,367 DEBUG [org.jboss.seam.Component] instantiating Seam component: org.jboss.seam.core.process | 2006-06-29 15:55:42,368 DEBUG [org.jboss.seam.Component] instantiating Seam component: mainMenu | 2006-06-29 15:55:42,380 DEBUG [org.jboss.seam.jsf.SeamVariableResolver] resolved name to seam component | 2006-06-29 15:55:42,388 DEBUG [org.jboss.mx.loading.RepositoryClassLoader] setRepository, [EMAIL PROTECTED], [EMAIL PROTECTED] url=null ,addedOrder=0} | 2006-06-29 15:55:42,388 INFO [STDOUT] produced class name=[Lorg.apache.myfaces.custom.navmenu.NavigationMenuItem; | 2006-06-29 15:55:42,391 INFO [STDOUT] returned class name=[Lorg.apache.myfaces.custom.navmenu.NavigationMenuItem; | 2006-06-29 15:55:42,431 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/test-seam].[jsp]] Servlet.service() for servlet jsp threw exception | java.lang.IllegalArgumentException: Value binding of UINavigationMenuItems with id _id0:_id1 does not reference an Object of type NavigationMenuItem, NavigationMenuItem[], Collection or Map | at org.apache.myfaces.custom.navmenu.NavigationMenuUtils.addNavigationMenuItems(NavigationMenuUtils.java:145) | at org.apache.myfaces.custom.navmenu.NavigationMenuUtils.getNavigationMenuItemList(NavigationMenuUtils.java:100) | at org.apache.myfaces.custom.navmenu.jscookmenu.HtmlJSCookMenuRenderer.encodeChildren(HtmlJSCookMenuRenderer.java:161) | at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:319) | at javax.faces.webapp.UIComponentTag.encodeChildren(UIComponentTag.java:343) | at javax.faces.webapp.UIComponentTag.doEndTag(UIComponentTag.java:251) | at org.apache.jsp.superMenu_jsp._jspx_meth_t_jscookMenu_0(superMenu_jsp.java:181) | at org.apache.jsp.superMenu_jsp._jspx_meth_h_form_0(superMenu_jsp.java:148) | at org.apache.jsp.superMenu_jsp._jspx_meth_f_view_0(superMenu_jsp.java:117) | at org.apache.jsp.superMenu_jsp._jspService(superMenu_jsp.java:82) | at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) | at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) | at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332) | at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) | at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) | at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) | at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) | at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) | at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398) | at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301) | at org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:415) | at org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:234) | at org.jboss.seam.jsf.SeamViewHandler.renderView(SeamViewHandler.java:59) | at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:352) | at javax.faces.webapp.FacesServlet.service(FacesServlet.java:107) | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) | at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:144) | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) | at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) | at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) | at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) | at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175) | at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74) | at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) | at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) | at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) | at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) | at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) | at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) | at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) | at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112) | at java.lang.Thread.run(Thread.java:595) | 2006-06-29 15:55:42,434 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/test-seam].[Faces Servlet]] Servlet.service() for servlet Faces Servlet threw exception | javax.faces.FacesException: Value binding of UINavigationMenuItems with id _id0:_id1 does not reference an Object of type NavigationMenuItem, NavigationMenuItem[], Collection or Map | at org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:421) | at org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:234) | at org.jboss.seam.jsf.SeamViewHandler.renderView(SeamViewHandler.java:59) | at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:352) | at javax.faces.webapp.FacesServlet.service(FacesServlet.java:107) | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) | at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:144) | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) | at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) | at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) | at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) | at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175) | at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74) | at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) | at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) | at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) | at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) | at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) | at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) | at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) | at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112) | at java.lang.Thread.run(Thread.java:595) | Caused by: org.apache.jasper.JasperException: Value binding of UINavigationMenuItems with id _id0:_id1 does not reference an Object of type NavigationMenuItem, NavigationMenuItem[], Collection or Map | at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510) | at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393) | at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) | at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) | at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) | at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) | at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) | at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398) | at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301) | at org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:415) | ... 25 more | | I can produce the same kind of error If return a List of NavigationMenuItem instead of an array. In this case, the List instance is properly recognized but items returned by iteration aren't detected as NavigationMenuItem. I 'm now stucked on this pb since a week. I haven't seen any pb of this kind posted here, I hope that's only a configuration pb from me. please help !!! View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3954344#3954344 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3954344 Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ JBoss-user mailing list JBoss-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jboss-user