Hello,
I was playing around with stripes layouts and ran into a null pointer exception.
There are 2 jsp files, one called Start.jsp and another one called
dashboardBox.jsp. Both are located under the same directory.
The content of dashboardBox.jsp:
<%@ include file="/WEB-INF/jsp-commons/Taglib.jsp"%>

<s:layout-definition>
        <fmt:message var="urlBeanClass" key="topList.linkTargetId" />
        <div class="dashboardBoxMain" onclick="location='${urlBeanClass}';">
        <div class="dashboardBoxTitle"><s:layout-render
name="/WEB-INF/jsp-layouts/FmtWithParams.jsp"
message="${topList.caption}" /></div>
        <div class="dashboardBoxContent"><c:forEach var="entry"
items="${topList.entries}">
                <p><s:layout-render 
name="/WEB-INF/jsp-layouts/FmtWithParams.jsp"
message="${entry}" /></p>
        </c:forEach></div>
        </div>
</s:layout-definition>

Here is the working example of Start.jsp:
<%@ include file="/WEB-INF/jsp-commons/Taglib.jsp"%>
<s:layout-render name="/WEB-INF/jsp-layouts/menuFeaturedPage.jsp">
        <s:layout-component name="pageTitle">
                <fmt:message key="page.start.pageTitle" />
        </s:layout-component>
        <s:layout-component name="head"><%@ include
file="/WEB-INF/jsp-commons/AjaxHead.jsp"%></s:layout-component>
        <s:layout-component name="onLoad"></s:layout-component>
        <s:layout-component name="content">
                <h1><fmt:message key="page.start.header" /></h1>
                <hr />
                <p><fmt:message key="page.start.intro" /></p>
                <s:messages />
                <s:errors />
                <c:forEach var="topx" items="${actionBean.topLists}" 
varStatus="status">
                        <s:layout-render 
name="/WEB-INF/jsp/app/start/dashboardBox.jsp"
topList="${topx}"/>
                </c:forEach>
        </s:layout-component>
</s:layout-render>

If I change the path to a relative style:
<%@ include file="/WEB-INF/jsp-commons/Taglib.jsp"%>
<s:layout-render name="/WEB-INF/jsp-layouts/menuFeaturedPage.jsp">
        <s:layout-component name="pageTitle">
                <fmt:message key="page.start.pageTitle" />
        </s:layout-component>
        <s:layout-component name="head"><%@ include
file="/WEB-INF/jsp-commons/AjaxHead.jsp"%></s:layout-component>
        <s:layout-component name="onLoad"></s:layout-component>
        <s:layout-component name="content">
                <h1><fmt:message key="page.start.header" /></h1>
                <hr />
                <p><fmt:message key="page.start.intro" /></p>
                <s:messages />
                <s:errors />
                <c:forEach var="topx" items="${actionBean.topLists}" 
varStatus="status">
                        <s:layout-render name="dashboardBox.jsp" 
topList="${topx}"/>
                </c:forEach>
        </s:layout-component>
</s:layout-render>

I get the following Exception trace:
[ WARN] 14:54:38
net.sourceforge.stripes.exception.DefaultExceptionHandler:90 -
Unhandled exception caught by the Stripes default exception handler.
org.apache.jasper.JasperException: javax.servlet.ServletException:
net.sourceforge.stripes.exception.StripesJspException: An exception
was raised while invoking a layout. The layout used was
'dashboardBox.jsp'. The following information was supplied to the
render tag: LayoutContext{component names=[],
parameters={toplist=de.dser.dwh.model.topl...@40b181}}
        at 
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522)
        at 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398)
        at 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at 
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630)
        at 
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
        at 
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
        at 
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
        at 
net.sourceforge.stripes.action.ForwardResolution.execute(ForwardResolution.java:110)
        at 
net.sourceforge.stripes.controller.DispatcherHelper$7.intercept(DispatcherHelper.java:483)
        at 
net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:158)
        at 
net.sourceforge.stripes.controller.HttpCacheInterceptor.intercept(HttpCacheInterceptor.java:99)
        at 
net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:155)
        at 
net.sourceforge.stripes.controller.BeforeAfterMethodInterceptor.intercept(BeforeAfterMethodInterceptor.java:113)
        at 
net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:155)
        at 
net.sourceforge.stripes.controller.ExecutionContext.wrap(ExecutionContext.java:74)
        at 
net.sourceforge.stripes.controller.DispatcherHelper.executeResolution(DispatcherHelper.java:477)
        at 
net.sourceforge.stripes.controller.DispatcherServlet.executeResolution(DispatcherServlet.java:293)
        at 
net.sourceforge.stripes.controller.DispatcherServlet.doPost(DispatcherServlet.java:177)
        at 
net.sourceforge.stripes.controller.DispatcherServlet.doGet(DispatcherServlet.java:67)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at 
net.sourceforge.stripes.controller.StripesFilter.doFilter(StripesFilter.java:246)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:46)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
        at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
        at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at 
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Thread.java:595)
Caused by: javax.servlet.ServletException:
net.sourceforge.stripes.exception.StripesJspException: An exception
was raised while invoking a layout. The layout used was
'dashboardBox.jsp'. The following information was supplied to the
render tag: LayoutContext{component names=[],
parameters={toplist=de.dser.dwh.model.topl...@40b181}}
        at 
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:848)
        at 
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)
        at 
org.apache.jsp.WEB_002dINF.jsp.app.start.Start_jsp._jspService(Start_jsp.java:202)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
        ... 41 more
Caused by: org.apache.jasper.JasperException: java.lang.NullPointerException
        at 
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522)
        at 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
        at 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at 
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630)
        at 
org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:535)
        at 
org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:472)
        at 
org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:968)
        at 
org.apache.jasper.runtime.PageContextImpl.doInclude(PageContextImpl.java:640)
        at 
org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:634)
        at 
net.sourceforge.stripes.tag.layout.LayoutRenderTag.doEndTag(LayoutRenderTag.java:113)
        at 
org.apache.jsp.WEB_002dINF.jsp.app.start.Start_jsp._jspx_meth_s_005flayout_002drender_005f1(Start_jsp.java:449)
        at 
org.apache.jsp.WEB_002dINF.jsp.app.start.Start_jsp._jspx_meth_c_005fforEach_005f0(Start_jsp.java:413)
        at 
org.apache.jsp.WEB_002dINF.jsp.app.start.Start_jsp._jspService(Start_jsp.java:164)
        ... 44 more
Caused by: java.lang.NullPointerException
        at 
net.sourceforge.stripes.tag.layout.LayoutDefinitionTag.doStartTag(LayoutDefinitionTag.java:72)
        at 
org.apache.jsp.WEB_002dINF.jsp.app.start.dashboardBox_jsp._jspx_meth_s_005flayout_002ddefinition_005f0(dashboardBox_jsp.java:100)
        at 
org.apache.jsp.WEB_002dINF.jsp.app.start.dashboardBox_jsp._jspService(dashboardBox_jsp.java:78)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
        ... 59 more

Is this expected behavior?

Thanks,
Richard

------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
Stripes-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/stripes-users

Reply via email to