2017-02-02 3 views
0

Je suis en train de faire une conversion de mise à jour vers un très vieux projet Java et de le convertir sous Spring Boot. Mais, j'ai des difficultés à rendre les pages de la première page à rendre car elles ont été construites avec Struts2, .ftl en utilisant des tuiles Apache. Pour une raison quelconque, je reçois cette erreur JspTaglibs est indéfini. Il ne peut pas être affecté à des vignettes, lorsqu'il essaie de charger la page.JspTaglib ["http://tiles.apache.org/tags-tiles"] est indéfini: il ne peut pas être affecté aux mosaïques

J'ai vérifié que j'avais tous les fichiers Jar nécessaires (je pense?), Mais comme je ne connais pas du tout .ftl ou des tuiles, je ne peux m'empêcher de comprendre quel est le problème.

dépendances:

<dependency> 
     <groupId>org.apache.tiles</groupId> 
     <artifactId>tiles-core</artifactId> 
     <version>2.2.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.tiles</groupId> 
     <artifactId>tiles-api</artifactId> 
     <version>2.2.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.tiles</groupId> 
     <artifactId>tiles-jsp</artifactId> 
     <version>2.2.2</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.struts</groupId> 
     <artifactId>struts2-core</artifactId> 
     <version>2.1.8.1</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.struts</groupId> 
     <artifactId>struts2-tiles-plugin</artifactId> 
     <version>2.1.8</version> 
    </dependency> 

    <dependency> 
     <groupId>org.freemarker</groupId> 
     <artifactId>freemarker</artifactId> 
     <version>2.3.15</version> 
    </dependency> 

Je suis assignant les tuiles à la page comme celle-

<#assign tiles=JspTaglibs["http://tiles.apache.org/tags-tiles"]> 

<@tiles.insertAttribute name="navigation" /> 

<@tiles.insertAttribute name="body" /> 
+0

Quelles sont les difficultés? –

+0

'freemarker.core.InvalidReferenceException: Erreur sur la ligne 33, colonne 1 dans layout/layout.ftl JspTaglibs [" http://tiles.apache.org/tags-tiles "] est indéfini. Il ne peut pas être affecté à des carreaux »semble être l'erreur que je reçois – Oliver

Répondre

0

Ajouter ceci à votre web.xml ou bootstrup cette servlet avec Spring Boot.

<servlet> 
    <servlet-name>jspSupportServlet</servlet-name> 
    <servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class> 
    <load-on-startup>5</load-on-startup> 
</servlet> 

Il suffit pour intégrer Freemarker avec des carreaux en Struts 2.

Vous pouvez utiliser struts-examples projet tuiles qui démontre une telle intégration. Mettez également à niveau vers la dernière version de Struts.

La partie sensible de ce projet, vous pouvez trouver dans pom.xml.

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <struts2.version>2.5.8</struts2.version> 
</properties> 

+0

Merci Roman pour la réponse. J'ai réellement eu cette partie sur mon web.xml. Maintenant que j'ai regardé de plus près l'erreur, je me sens stupide. Il est réellement cause par Jetty avant et ce n'est qu'un résultat. Bien que je ne sais pas comment résoudre encore ... 'java.lang.IllegalStateException: Commit \t à org.eclipse.jetty.server.Response.resetBuffer (Response.java:1242) ~ [jetty-server-9.2 .19.v20160908.jar: 9.2.19.v20160908] \t à org.eclipse.jetty.server.Response.sendError (Response.java:567) ~ [jetty-server-9.2.19.v20160908.jar: 9.2. 19.v20160908] ' – Oliver

+0

Vous n'avez pas essayé l'exemple de cette réponse. La version de jetty est 8.1.16.v20140903 –

+0

J'ai essayé de vérifier l'exemple de tuiles de votre lien et mon web.xml a la plupart du temps la même partie pour l'exception en utilisant ' org.apache.struts2.dispatcher.FilterDispatcher 'avec quelques params au lieu de' org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter' – Oliver