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

Reply via email to