2017-02-02 1 views
0

Я делаю преобразование обновления в очень старый проект Java и преобразовываю его под Spring Boot. Но у меня возникают трудности с отображением первых страниц, поскольку они были созданы с помощью Struts2, .ftl с использованием Apache Tiles. По какой-то причине я получаю эту ошибку JspTaglibs не определен. Он не может быть привязан к плитке, когда он пытается загрузить страницу.JspTaglib ["http://tiles.apache.org/tags-tiles"] не определен: он не может быть присвоен плитам

Я проверил, что у меня все необходимые файлы Jar (я думаю?), Но поскольку я совсем не знаком с .ftl или плитками, я не могу помочь себе выяснить, в чем проблема.

зависимости:

<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> 

Я задаю плитку страницы как этого

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

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

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

Какие трудности? –

+0

'freemarker.core.InvalidReferenceException: ошибка в строке 33, столбец 1 в layout/layout.ftl JspTaglibs [" http://tiles.apache.org/tags-tiles "] не определен. Невозможно назначить плитки', кажется, ошибка, я получаю – Oliver

ответ

0

Добавьте это в web.xml или bootstrup этого сервлета с Spring ботинком.

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

Это необходимо интегрировать Freemarker с плиткой в ​​Struts 2.

Вы можете использовать struts-examples плитку проекта, который демонстрирует такую ​​интеграцию. Также обновите до последней версии Struts.

Разумную часть этого проекта вы можете найти в pom.xml.

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

+0

Спасибо, Роман за ответ. У меня на самом деле была эта часть на моем web.xml. Теперь, когда я более внимательно посмотрел на ошибку, я чувствую себя глупо. Это на самом деле причина Jetty раньше, и это только результат этого. Allthough я не знаю, как это исправить ... 'java.lang.IllegalStateException: Committed \t at org.eclipse.jetty.server.Response.resetBuffer (Response.java:1242) ~ [jetty-server-9.2 .19.v20160908.jar: 9.2.19.v20160908] \t at org.eclipse.jetty.server.Response.sendError (Response.java:567) ~ [jetty-server-9.2.19.v20160908.jar: 9.2. 19.v20160908] ' – Oliver

+0

Вы не попробовали пример из этого ответа. Версия для пристани 8.1.16.v20140903 –

+0

Я попытался проверить пример плитки из вашей ссылки, и мой web.xml имеет в основном ту же часть для исключения im, используя ' org.apache.struts2.dispatcher.FilterDispatcher 'с некоторыми параметрами вместо' org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter' – Oliver