@Action
アクションからおよびコンベンション プラグインの注釈を削除し、@Result
それらを の同等の構成に置き換える際に問題が発生していstruts.xml
ます。
package com.microed.cars.web;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
import com.opensymphony.xwork2.ActionSupport;
public class HomeAction extends ActionSupport {
@Action(results = {
@Result(location = "/jsp/home.jsp")
})
@Override
public String execute() throws Exception {
return super.execute();
}
}
これらの注釈があれば、正常にアクセスできますlocalhost:port/context/home.action
注釈を削除すると、struts.xml に「すべてをキャプチャ」の結果があるにもかかわらず、「アクションの結果が定義されていません.....」という struts エラーが発生します。struts.xml 全体は次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.devMode" value="true"/>
<constant name="struts.convention.package.locators" value="web"/>
<constant name="struts.convention.default.parent.package" value="beetroot"/>
<package name="beetroot" extends="json-default">
<action name="home" class="homeAction">
<result>/jsp/home.jsp</result>
</action>
<action name="cars" class="baseCarsAction">
<result name="input" type="json">
<param name="root">autoResults</param>
/jsp/home.jsp
</result>
</action>
</package>
</struts>
オートコンプリート関数に json の結果の型が必要なため、json-default を拡張します。
homeAction
クラスのアクション マッピングが取得されない理由がわかりません。アクションマッピング「車」を削除すると、オートコンプリートが無効になるため、読み取られていることがわかりstruts.xml
ます(ただし、これを検証するには、削除しようとしている注釈が必要です)。
「結果が定義されていません」は単純なエラーであり、通常はスペル/大文字化のエラーが原因であることはわかっていますが、ここでは絶対にそうではありません.「ホーム」アクションマッピング全体を単に無視しているようです.
をステップスルーするときDefaultActionInvocation.createResult
、照合しようとする「結果」はまったくありません。