Внутреннее исключение Struts2/Tiles

У меня есть 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>

Пустой.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)
.....

РЕДАКТИРОВАТЬ:

Я думал, что это работает, но это не так. На самом деле система не падает, но страница плиток не включается в страницу почты. Исключение, которое я получаю:

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>

Здесь я делюсь частью своего проекта. Есть только та часть, которая не работает... СКАЧАТЬ


person Emaborsa    schedule 01.10.2013    source источник
comment
Посмотрите на это, может помочь...   -  person Andrea Ligios    schedule 01.10.2013
comment
<web-app... Он уже определен.   -  person Emaborsa    schedule 02.10.2013
comment
Если вы используете Struts2-Tiles3, взгляните на это: stackoverflow.com/a/14540358/1654265   -  person Andrea Ligios    schedule 02.10.2013
comment
Это не проблема списков или чего-то подобного. MyPage никогда не загружается, я также пытался передать jsp только с текстовой строкой, и я получаю ту же ошибку. Кажется, что struts не распознает определение плитки...   -  person Emaborsa    schedule 02.10.2013
comment
попробуйте с <put-attribute name="body" value="/WEB-INF/pages/mypage.jsp"/> . Если это не работает, опубликуйте дополнительную информацию: версию Struts, версию Tiles, структуру каталогов и т. д.   -  person Andrea Ligios    schedule 02.10.2013
comment
Опубликуйте свой web.xml и URL-адрес, используемый для вызова действия - NPE означает, что Dispatcher не был инициализирован   -  person Lukasz Lenart    schedule 03.10.2013
comment
Я провел несколько экспериментов. Я видел, что если я использую теги с префиксом jsp <jsp:include> и теги с префиксом <s:text> в одном и том же JSP, происходит сбой. Если я удалю один из них, он не вызовет исключений. Это нормально или это баг?   -  person Emaborsa    schedule 03.10.2013
comment
... я не смог запустить его. Я получаю исключение, и в Интернете я не могу найти никакой помощи. я получаю org.apache.tiles.impl.CannotRenderException: No request dispatcher returned for path '/../pages/common/mzPage.jsp'   -  person Emaborsa    schedule 07.10.2013
comment
Покажи свой mypage.jsp. Какая версия Struts2 и Tiles?   -  person Aleksandr M    schedule 07.10.2013
comment
Struts — это версия 2.1.6, а Tiles — 2.1.2.   -  person Emaborsa    schedule 07.10.2013
comment
Я узнал проблему. Это не компонент плитки или распорки, который беспокоит... снова он жалуется, если я использую тег <s:action> и другие теги распорок в том же jsp. Если я использую только это `‹s:action›, это работает.   -  person Emaborsa    schedule 08.10.2013
comment
Я добавил ссылку для загрузки моего проекта... пожалуйста, посмотрите.   -  person Emaborsa    schedule 15.10.2013


Ответы (2)


Пусть эта ошибка исходит от вашей страницы jsp. Можете ли вы опубликовать код, доступный в mypage.jsp? Или проверьте вручную, использовали ли вы какие-либо теги скриптлета, чтобы вызвать исключение нулевого указателя. Проверьте значения с помощью логических тегов Struts. Таким образом, вы можете не столкнуться с исключением нулевого указателя.

person Vinoth Krishnan    schedule 01.10.2013
comment
Ну, я пытаюсь передать другие jsp-страницы, которые при обычном вызове работают, но в этом случае они не работают. Я также пытаюсь вызвать это действие (myaction) непосредственно из URL-адреса, и результат отображается ... поэтому проблема должна быть в определении struts/tiles (я думаю) - person Emaborsa; 02.10.2013

Решено обновление до Struts 2.3.15.2

person Emaborsa    schedule 16.10.2013