Ho un'installazione Weblogic 10.3.3 e sembra che abbia problemi con i tag JSP ricorsivi. Su Internet ho trovato altre persone che hanno riscontrato gli stessi problemi (here e here), ma nessuna soluzione. Alcune persone suggeriscono che sia stato risolto in Weblogic 12 o che funzionasse in 9, ma non posso confermarlo.Tag JSP weblogic e ricorsivo
L'applicazione viene creata utilizzando Spring/Spring Roo/Apache Tiles/jspx. La classe del modello che viene visualizzata è qualcosa di simile:
public class Programme {
private String name;
private final List<Programme> programmes = new ArrayList<Programme>();
...(getter/setter)...
}
poi ho un Tagx come questo:
<jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:coursedataimport="urn:jsptagdir:/WEB-INF/tags/coursedataimport" version="2.0">
<jsp:output omit-xml-declaration="yes" />
<jsp:directive.attribute name="programme" type="package.Programme" required="true" rtexprvalue="true" />
<c:out value="${programme.name}" />
<ul>
<c:forEach var="p" items="${programme.programmes}">
<li><coursedataimport:programme programme="${p}" /></li>
</c:forEach>
</ul>
</jsp:root>
Questo non funziona. Quando si richiede la pagina, il contenitore dell'applicazione sembra bloccarsi (probabilmente qualche overflow dello stack, ma non riesco a trovarlo nei log) e il contesto dell'applicazione viene ricaricato. In Tomcat 7 funziona perfettamente.
L'eccezione indicata è qualcosa di simile, ma non sono sicuro se è collegato (in quanto parla della pagina di errore):
[ServletContext @ 483.389.576 [app: modulo app-ear-0 : percorso appmodule:/CONTEXTROOT spec-version: 2.5]] Si è verificato un problema durante la pubblicazione della pagina di errore. org.springframework.web.util.NestedServletException: elaborazione richiesta non riuscita; l'eccezione nidificata è java.lang.ClassCastException: org.apache.tiles.ArrayStack a org.springframework.web.servlet.FrameworkServlet.processRequest (FrameworkServlet.java:894) a org.springframework.web.servlet.FrameworkServlet.doGet (FrameworkServlet.java:779) a javax.servlet.http.HttpServlet.service (HttpServlet.java:707) a javax.servlet.http.HttpServlet.service (HttpServlet.java:821) a ...
Qualcuno ha riscontrato questi problemi prima o qualcuno è a conoscenza di una correzione? Qualche suggerimento su come eseguire il debug di questo o su come aggirare il tag ricorsivo (dal momento che voglio visualizzare un albero, è un po 'una sfida). Grazie in anticipo.
Si sta tentando di chiamare il tag del programma in modo ricorsivo? Ho un problema simile. Durante la chiamata in modo ricorsivo, un file di tag funziona in Tomcat 6, ma non in Weblogic 11. –
Sì, questo è il problema. Tomcat funziona bene con esso, ma Weblogic è una pita. Non abbiamo mai trovato una soluzione per questo oltre a riscrivere il codice in modo che non utilizzi un tag ricorsivo. – MikeN