2012-11-17 32 views
1

Struts2&Tiles3.0.0錯誤嘗試我最好的但沒有成功。 Index action is loaded fine but when I navigate to test than error is generated。不知道爲什麼會這樣。當從索引導航

Using struts2 = 2.3.4.1 
Tomcat latest 
Tiles = 3.0.0 

的pom.xml

<properties> 
     <java.version>1.7</java.version> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <struts2.version>2.3.4.1</struts2.version> 
     <slf4j.version>1.6.6</slf4j.version> 
     <tiles.version>3.0.0</tiles.version> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>javax</groupId> 
      <artifactId>javaee-web-api</artifactId> 
      <version>6.0</version> 
      <scope>provided</scope> 
     </dependency> 

     <!--Start Slf4j--> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>${slf4j.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-simple</artifactId> 
      <version>${slf4j.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.17</version> 
     </dependency> 
     <!--End Slf4j--> 

     <!--Start Struts2--> 
     <dependency> 
      <groupId>org.apache.struts</groupId> 
      <artifactId>struts2-core</artifactId> 
      <version>${struts2.version}</version> 
     </dependency> 
     <!--End Struts2--> 

     <!-- Start Tiles dependencies --> 
     <dependency> 
      <groupId>org.apache.struts</groupId> 
      <artifactId>struts2-tiles-plugin</artifactId> 
      <version>${struts2.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-api</artifactId> 
      <version>3.0.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-core</artifactId> 
      <version>3.0.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-extras</artifactId> 
      <version>3.0.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-jsp</artifactId> 
      <version>3.0.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-ognl</artifactId> 
      <version>3.0.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-servlet</artifactId> 
      <version>3.0.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-freemarker</artifactId> 
      <version>3.0.0</version> 
     </dependency> 


     <!-- End Tiles dependencies --> 

    </dependencies> 

struts.xml中

<package name="default" namespace="/" extends="tiles-default"> 

     <result-types> 
      <result-type name="tiles" default="true" class="org.apache.struts2.views.tiles.TilesResult"/> 
     </result-types> 
     <default-action-ref name="index"/> 
     <action name="index" class="com.myapp.tiles.action.Test"> 
      <result type="tiles">/welcome.tiles</result> 
     </action> 

     <action name="test" class="com.myapp.tiles.action.Test"> 
      <result type="tiles">test</result> 
     </action> 

     <action name="/**" class="com.myapp.tiles.action.Test"> 
      <result>{1}</result> 
     </action> 
    </package> 

Tiles.xml

<?xml version="1.0" encoding="UTF-8"?> 

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

<tiles-definitions > 
    <definition name="mainlayout" template="/templates/mainlayout.jsp"> 
     <put-attribute name="meta" value="/templates/main/meta.jsp"/> 
     <put-attribute name="title" value=""/> 
     <put-attribute name="header" value="/templates/main/header.jsp"/> 
     <put-attribute name="search" value="/templates/main/search.jsp"/> 
     <put-attribute name="navigation" value="/templates/main/navigation.jsp"/> 
     <put-attribute name="body" value=""/> 
     <put-attribute name="footer" value="/templates/main/footer.jsp"/> 
    </definition> 

    <definition name="/welcome.tiles" extends="mainlayout"> 
     <put-attribute name="title" value="Welcome To Person Management System"/> 
     <put-attribute name="body" value="/index.jsp"/> 
    </definition> 

    <definition name="test" extends="mainlayout"> 
     <put-attribute name="title" expression="OGNL:title" /> 
     <put-attribute name="body" value="/index.jsp"/> 
    </definition> 
    <definition name="WILDCARD:package/*" extends="mainlayout"> 
     <put-attribute name="title" value="{1}" type="string"/> 
     <put-attribute name="body" value="/test.jsp"/> 
    </definition> 



</tiles-definitions> 

錯誤

Nov 17, 2012 8:28:51 AM org.apache.catalina.core.ApplicationContext log 
java.lang.NoSuchMethodError: org.apache.tiles.access.TilesAccess.getContainer(Ljava/lang/Object;)Lorg/apache/tiles/TilesContainer; 
    at org.apache.struts2.views.tiles.TilesResult.doExecute(TilesResult.java:100) 
    at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186) 
    at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:374) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:278) 
    at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
    at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:236) 
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
    at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:236) 
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
    at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
    at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
    at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
    at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
    at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
    at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
    at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
    at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171) 
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
    at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
    at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
    at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
    at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) 
    at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54) 
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:511) 
    at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) 
    at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91) 
    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.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
    at java.lang.Thread.run(Thread.java:722) 

項目結構

Tiles

+1

您沒有按照我的集成指南;)我看到您在嘗試使用tiles時使用了struts2 tiles插件 - 3(tiles api已經改變,所以插件將無法使用大於2.2.2的tiles版本,所以使用插件不是一種選擇)...試試這個:http://stackoverflow.com/questions/13337938/how-to-integrate-struts-2-with-tiles-3/13338099#13338099它確實很容易。如果你卡住,請問。 – Quaternion

+0

@quaternion,謝謝。 https://repository.apache.org/index.html#nexus-search;quick~struts2-tiles-plugin。有struts tiles plugin的3.0-SNAPSHOT。但不爲我工作。我看着你的解決方案。 – Pirzada

+0

@quaternion,完美。工作。這是3.0-SNAPSHOT用於任何用途嗎? – Pirzada

回答

-1

首先檢查你是否有重複或衝突的瓶庫。正如你使用的Maven嘗試使用插件來檢查重複的依賴關係。

第二次給Tiles 2.x.x一試。我從來沒有集成Struts 2和Tiles,但遇到了Spring Class 3.x和Tiles 3的幾個No Class發現的異常3