tiles with spring : getting error - java.lang.ClassNotFoundException: org.apache.tiles.TilesApplicationContext

匿名 (未验证) 提交于 2019-12-03 01:10:02

问题:

I am new to spring and trying to use tiles with Spring. but getting above error. i am using maven in my project. i tried changing versions also, but no use. following are contents of project:

pom.xml

  <!-- Apache Tiles -->     <dependency>         <groupId>org.apache.tiles</groupId>         <artifactId>tiles-core</artifactId>         <version>3.0.5</version>     </dependency>      <dependency>         <groupId>org.apache.tiles</groupId>         <artifactId>tiles-jsp</artifactId>         <version>3.0.5</version>     </dependency>       <dependency>         <groupId>org.apache.tiles</groupId>         <artifactId>tiles-api</artifactId>         <version>3.0.5</version>     </dependency>      <dependency>         <groupId>org.apache.tiles</groupId>         <artifactId>tiles-servlet</artifactId>         <version>3.0.5</version>     </dependency>      <dependency>         <groupId>org.apache.tiles</groupId>         <artifactId>tiles-template</artifactId>         <version>3.0.5</version>     </dependency> 

servlet-context.xml

  <!-- for Tiles --> <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver" id="viewResolver">       <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView"/>             </bean>  <bean class="org.springframework.web.servlet.view.tiles2.TilesConfigurer" id="tilesConfigurer">       <property name="definitions" value="/WEB-INF/tiles-definitions.xml" />            </bean> 

tiles-definitions.xml

  <?xml version="1.0" encoding="UTF-8"?> <tiles-definitions>       <definition name="base.definition" template="/WEB-INF/views/tilesMainTemplate.jsp">           <put-attribute name="title" value=""></put-attribute>           <put-attribute name="header" value="/WEB-INF/views/header.jsp"></put-attribute>           <put-attribute name="menu" value="/WEB-INF/views/home.jsp"></put-attribute>           <put-attribute name="body" value=""></put-attribute>           <put-attribute name="footer" value="/WEB-INF/views/footer.jsp"></put-attribute>       </definition>        <definition extends="base.definition" name="saveAd">           <put-attribute name="title" value="Post your free Ad"></put-attribute>           <put-attribute name="body" value="/WEB-INF/views/adSave.jsp"></put-attribute>       </definition>     </tiles-definitions>   

then there are tilesMainTemplate, header and footer jsp's which i dont think have any issues. any help in this regard will be highly appreciated, Thanks in advance.

回答1:

Finally it worked ! I replaced tiles2 by tiles3 as correctly pointed out by mck and added following line to tiles-definitions.xml

<!DOCTYPE tiles-definitions PUBLIC   "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"    "http://tiles.apache.org/dtds/tiles-config_3_0.dtd"> 


回答2:

In your servlet-context.xml you are using the tiles2 spring-tiles integration classes.

Use instead the classes found under org.springframework.web.servlet.view.tiles3



回答3:

use this code if your are using version 3 . based on the version your are using should configure the tiles. <bean id="viewResolver"         class="org.springframework.web.servlet.view.UrlBasedViewResolver">         <property name="viewClass">             <value>                 org.springframework.web.servlet.view.tiles3.TilesView             </value>         </property>     </bean>     <bean id="tilesConfigurer"         class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">         <property name="definitions">             <list>                 <value>/WEB-INF/estudo-tiles-servlet.xml</value>             </list>         </property>     </bean> 


回答4:

Using:

import org.springframework.web.servlet.view.tiles3.TilesView; 

Not:

import org.springframework.web.servlet.view.tiles2.TilesView; 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!