2011-12-21 8 views
0

私はSpringアプリケーションでStruts2 Rest Pluginを使い始めています。 私たちのstruts.xmlを見てみましょう:SpringでStruts2-Rest-Pluginを使用する

<bean name="DocumentRestaction" class="be.example.actions.DocumentRestaction"> 
    <property name="injected" value="Oh Hai" /> 
</bean> 

を私はPOST要求:春に続いて

<struts> 
    <constant name="struts.devMode" value="true" /> 
    <constant name="struts.custom.i18n.resources" value="lang/messages" /> 
    <constant name="struts.ognl.allowStaticMethodAccess" value="true" /> 
    <constant name="struts.mapper.class" value="rest" /> 

    <package name="default"> 
     <action name="document" class="DocumentRestaction" /> 
    </package> 
</struts> 

、私は次の(文字列が注入されたかどうかを確認するために)をやっていますURL /documentsに送信し、create()メソッドになります。デバッグでは、私のinjected変数が注入されます。私はデバッグを継続させたときにでも、私は例外以下の取得:

4129 [http-8080-2] ERROR org.apache.struts2.rest.RestActionInvocation - Exception processing the result. 
java.lang.RuntimeException: Invalid action class configuration that references an unknown class named [DocumentRestaction] 
    at org.apache.struts2.convention.ConventionsServiceImpl.determineResultPath(ConventionsServiceImpl.java:100) 
    at org.apache.struts2.convention.ConventionUnknownHandler.determinePath(ConventionUnknownHandler.java:379) 
    at org.apache.struts2.convention.ConventionUnknownHandler.handleUnknownResult(ConventionUnknownHandler.java:268) 
    at com.opensymphony.xwork2.DefaultUnknownHandlerManager.handleUnknownResult(DefaultUnknownHandlerManager.java:87) 
    at com.opensymphony.xwork2.DefaultActionInvocation.createResult(DefaultActionInvocation.java:227) 
    at org.apache.struts2.rest.RestActionInvocation.executeResult(RestActionInvocation.java:221) 
    at org.apache.struts2.rest.RestActionInvocation.processResult(RestActionInvocation.java:198) 
    at org.apache.struts2.rest.RestActionInvocation.invoke(RestActionInvocation.java:146) 
    at com.opensymphony.xwork2.DefaultActionProxy.execute(DefaultActionProxy.java:147) 
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:510) 
    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:235) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198) 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:291) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
    at java.lang.Thread.run(Thread.java:679) 
Caused by: java.lang.ClassNotFoundException: DocumentRestaction 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526) 
    at org.apache.struts2.util.ClassLoaderUtils.loadClass(ClassLoaderUtils.java:111) 
    at org.apache.struts2.convention.ConventionsServiceImpl.determineResultPath(ConventionsServiceImpl.java:98) 
    ... 27 more 

しかし、クラスが発見されたが...(私はcreateで終わった)、なぜそれがこれを言っていますか?そして最も重要なのは、私は何が間違っているのか?私は春のv3.0.5、Struts2の休止・プラグインv2.3.1、Struts2のコアv2.3.1とStruts2のスプリング・プラグインを使用してい

2.3.1

+0

S2スプリングプラグインも使用していますか? –

+0

ええ、私は、Strutsの通常のアクションがSpringとすでに動作していることを忘れていました。 –

+0

大丈夫です。ええ、私はすぐに回避策はありませんが、それが結果のパスを決定しようとするとぎこちないと思われます。すでにRESTプラグインがない場合は、JIRAをRESTプラグインに登録します。それは既知の問題かもしれませんが、私はこの時点で答えを持っていません - 誰かがそれを調べます。 –

答えて

0

場合、誰もが解決策を探していますこちら、this商品が役に立ったかもしれません。

<bean id="com.mersoft.web.controller.TestController" class="com.mersoft.web.controller.TestController"> 
     <constructor-arg ref="testManager" /> 
    </bean> 

:あなたのapplicationContext.xmlをして、あなたは、コントローラの完全修飾クラス名である「ID」と「クラス」を定義してください - しかし、所与のサンプルコードでの漏れがあります

希望が役立ちます。ああ、明確にするために、以前のコメントに示唆されているように、コンベンションプラグインを削除する必要はありません。

関連する問題