[Struts2] Problema con <s:action> tag

Discussione in 'Java' iniziata da emaborsa, 10 Ottobre 2013.

Tag (etichette):
  1. emaborsa

    emaborsa Nuovo Utente

    Registrato:
    10 Ottobre 2013
    Messaggi:
    8
    Mi Piace Ricevuti:
    0
    Punteggio:
    0
    Ho messu su un sistema che utilizza Struts 2.1.6 e Tiles 2.1.2. Il tutto funziona perfettamente, a parte il tag <s:action> inserito in una JSP:

    Codice:
    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <s:form>
    <s:action name="myAction">
    namespace="/myNameSpace" executeResult="true"
    ignoreContextParams="true" var="myVar" />
    
    <s:if test="list != null">
    //do something with the list
    </s:if>
    
    //othre stuff
    Con questa pagina, mi viene lanciata un eccezione:

    Codice:
    2013-10-0815:43:41,028 ERROR [org.apache.tiles.jsp.taglib.RenderTag][http-bio-8080-exec-3] IO Error executing tag:JSPException including path '/pages/utente/elencoUtenti.jsp'.
    org.apache.tiles.util.TilesIOException: JSPException including path '/pages/utente/elencoUtenti.jsp'.
    at org.apache.tiles.servlet.context.ServletUtil.wrapServletException(ServletUtil.java:232)
    at org.apache.tiles.jsp.context.JspTilesRequestContext.include(JspTilesRequestContext.java:105)
    at org.apache.tiles.jsp.context.JspTilesRequestContext.dispatch(JspTilesRequestContext.java:96)
    at org.apache.tiles.renderer.impl.UntypedAttributeRenderer.write(UntypedAttributeRenderer.java:61)
    .... Caused by: 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:232)
    at org.apache.jsp.pages.utente.elencoUtenti_jsp._jspx_meth_s_005fform_005f0(elencoUtenti_jsp.java:172)
    at org.apache.jsp.pages.utente.elencoUtenti_jsp._jspService(elencoUtenti_jsp.java:104)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:389)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)
    at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:605)
    at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:544)
    at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:954)
    at org.apache.jasper.runtime.PageContextImpl.doInclude(PageContextImpl.java:684)
    at org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:678)
    at org.apache.tiles.jsp.context.JspTilesRequestContext.include(JspTilesRequestContext.java:103)
        ...99 more 
    Se tolgo <s:action> dalla JSP, la pagina in question (elencoUtenti.jsp) viene caricata a dovere. Se lascio solo <s:action>, pure funziona...da questo escludo un problema in questa JSP.

    La "myAction" viene chiatata e terminata correttamente (testato in debug) e ritorna success, il result è anche corretto altrimenti mi darebbe eccezione di importazioni (testato cambiando il nome della jsp da includere), ho provato anche a passargli una JSP vuota, per vedere se è un problema della seconda JSP...invece nulla, deve essere un impostazione di struts e/o tiles.

    Qualche idea?
     
  2. Slyfer

    Slyfer Utente Attivo

    Registrato:
    4 Dicembre 2010
    Messaggi:
    65
    Mi Piace Ricevuti:
    21
    Punteggio:
    0
    Ciao, ho un domanda e una richiesta. Domanda: perchè l'action è dentro al form?? Richiesta: ci puoi postare lo struts.xml e la classe java della action.

    ciao
     
  3. emaborsa

    emaborsa Nuovo Utente

    Registrato:
    10 Ottobre 2013
    Messaggi:
    8
    Mi Piace Ricevuti:
    0
    Punteggio:
    0
    Ciao, la action è all'interno al form, perchè ritorna una JSP con delle varaibili che servono al form.

    Struts:
    Codice:
    <package name="default-empty" extends="struts-default">
        <result-types>
            <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />
        </result-types>
    </package>
    <package name="utente-include" namespace="/utenteInclude" extends="default-empty">	    
        <action name="formattazionePaginazione" class="com.emaborsa.doctracing.web.action.formattazione.FormattazioneCriteriUtenteAction"
    			method="formattazione">
            <result name="success" type="tiles">common.paginazione.def</result>
        </action>
    		
        <action name="ricerca" class="com.emaborsa.doctracing.web.action.ricerca.RicercaUtentiAction" method="ricerca">
            <result name="success" type="tiles">include.utente.elenco.def</result>
        </action>		
    </package>
    
    Tiles:
    Codice:
    <definition name="common.paginazione.def" template="/pages/common/paginazione.jsp">
    </definition>
    
    Come già scritto, se tolgo o la <s:action> o il resto della pagina, il sistema non da eccezioni.
    Ho un altro progetto strutturato in questa maniera, e funziona...unica differenza che NON lavora su TomEE.
     
  4. Slyfer

    Slyfer Utente Attivo

    Registrato:
    4 Dicembre 2010
    Messaggi:
    65
    Mi Piace Ricevuti:
    21
    Punteggio:
    0
    Ciao, non vedo la definizione della myAction e non hai messo il codice java.

    Il container penso non c'entri, anche perchè se hai solo struts e tiles, basta un normalissimo tomcat o addirittura jetty

    ciao
     
  5. emaborsa

    emaborsa Nuovo Utente

    Registrato:
    10 Ottobre 2013
    Messaggi:
    8
    Mi Piace Ricevuti:
    0
    Punteggio:
    0
    ...avevo dimenticato la JSP con i parametri corretti:

    Codice:
    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <s:form>
    
    	<div class="titoloBloccoForm">
    		<s:text name="utente.elenco.titolo" />
    	</div>
    	
    	<s:action name="formattazionePaginazione"
    			namespace="/utenteInclude" executeResult="true"
    			ignoreContextParams="false" var="formattazione" />
    		
    	<s:if test="lista != null && lista.size() > 0">
    		//altro codice
    	</s:if>
    	<s:else>
    	    <div><span class="info"><s:text name="elenco.empty" /></span></div>
    	</s:else>
    
            //altro codice jsp
    </s:form>
    
     
    Ultima modifica: 11 Ottobre 2013
  6. emaborsa

    emaborsa Nuovo Utente

    Registrato:
    10 Ottobre 2013
    Messaggi:
    8
    Mi Piace Ricevuti:
    0
    Punteggio:
    0
    Vi posto parte del progetto....vi prego di darci un occhiata: DOWNLOD
     
  7. emaborsa

    emaborsa Nuovo Utente

    Registrato:
    10 Ottobre 2013
    Messaggi:
    8
    Mi Piace Ricevuti:
    0
    Punteggio:
    0
    ....lavoro anche con EJB3, perciò ho dovuto prendere TomEE.
     
Sto caricando...

Condividi questa Pagina