Struts2 / Tiles内部异常

时间:2013-10-01 14:42:19

标签: java jsp struts2 tiles servletexception

我有一个JSP,它使用<s:action>标记调用操作:

<s:form>
    <s:action name="myaction"
        namespace="/utente/include" executeResult="true"
        ignoreContextParams="true" var="formattazione" />

    //do something
</s:form>

调用了动作myaction,我可以按照流程调试它。它完成没有错误,它返回成功,但然后有一个错误,我无法理解哪一个。

动作定义:

<package name="utente-include" namespace="/utente/include" extends="tiles-default">

    <action name="myaction" class="com.emaborsa.doctracing.web.action.formattazione.FormattazioneCriteriUtenteAction"
        method="formattazione">
        <result type="tiles">mytiles.def</result>
    </action>

</package>

图块定义:

<definition name="mytiles.def" template="/pages/empty.jsp">
    <put-attribute name="body" value="/pages/mypage.jsp"/>
</definition>

empty.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<tiles:insertAttribute name="body" />

例外:

GRAVE: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at org.apache.struts2.views.jsp.ComponentTagSupport.doStartTag(ComponentTagSupport.java:49)
at org.apache.jsp.pages.utente.elencoUtenti_jsp._jspx_meth_s_005fif_005f0(elencoUtenti_jsp.java:215)
at org.apache.jsp.pages.utente.elencoUtenti_jsp._jspx_meth_s_005fform_005f0(elencoUtenti_jsp.java:155)
at org.apache.jsp.pages.utente.elencoUtenti_jsp._jspService(elencoUtenti_jsp.java:87)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
.....

编辑: 我认为它有效,但事实并非如此。实际上系统不会崩溃,但是tile页面不包含在邮件页面中。我得到的例外:

org.apache.tiles.impl.CannotRenderException: No request dispatcher returned for path '/../pages/common/myPage.jsp'
at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:680)
at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:633)
at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:322)
at org.apache.struts2.views.tiles.TilesResult.doExecute(TilesResult.java:105)
at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186)
at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:361)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:163)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)

这里是我的myPage.jsp(实际上写的内容并不重要):

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>

<div class="navigazioneElenco" id="navigazioneElenco">

</div>

在这里,我分享了我的项目的一部分。只有那部分不起作用...... DOWNLOAD

2 个答案:

答案 0 :(得分:0)

这个错误可能来自你的jsp页面。你可以发布mypage.jsp中可用的代码吗?或者手动检查你使用任何scriptlet标签可能会导致空指针异常。使用struts逻辑标记检查值。所以你可能不会遇到空指针异常。

答案 1 :(得分:0)

解决了对Struts 2.3.15.2

的更新问题