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
[email protected]
https://lists.sourceforge.net/lists/listinfo/jboss-user