1

Struts2 アノテーションを使用しました

web.xmlは:

<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

私のJSPは:

      <s:form action="test" method="post">
            <s:textfield name="id" label="Id"></s:textfield>        
            <s:submit value="Submit"></s:submit>
     </s:form>

私のクラスは:

      @Namespace("/")
      public class Test extends ActionSupport {

  private static final long serialVersionUID = 1L;

      @Action(value = "test", results = { @Result(name = "success", location =     "success.jsp") })
      public String input() {

         System.out.println("input call");
         return SUCCESS;
     }

 }

エラーが発生しました:

HTTP Status 404 - There is no Action mapped for namespace / and action name test.

フォルダ構造:

私のフォルダ構造は

4

3 に答える 3

3

以下をせよ。

Test アクションを「com.mydomain.action」というパッケージに配置します。最初の部分は好きなようにできますが、「.action」で終わる必要があります。struts2-conventions がアクションを取得します。「com.mydomain.action.here」などの追加パッケージがある場合、「action」に続くパッケージは struts2 名前空間として解釈されます。

「success.jsp」の名前を「test.jsp」に変更して、「/WEB-INF/content/test.jsp」に移動してください。/WEB-INF/content は、デフォルトのネームスペース内のアクションのビューが解決される場所です。/here パッケージの場合、ビューは /WEB-INF/content/here の下に配置する必要があります。

Test アクションを書き直して、慣例のデフォルトを維持します。

public class Test extends ActionSupport {
   private static final long serialVersionUID = 1L;
   public String execute() {
         System.out.println("input call");
         return SUCCESS;
   }
 }

他に注意すべきことがあります。test だけでなく、test-success.jsp というビューを呼び出すこともできます。これは、規則が最初に、アクションから返された文字列がアクション名に追加されたビューを探すためです。この場合はテストです。

また、クラスはキャメル ケースですが、MyMagicTest などのアクション クラスのビューは my-magic-test.jsp になります。

注釈が収まる場所:

xml OR 注釈なしで多くのことができることがわかったので、慣例では注釈を使用して、必要に応じてデフォルトを上書きします。近道をするためにこれを行うので、注釈は例外的なケースを示します。それらを使用して、既定ですぐに提供される規則を定義しないでください。

規約の詳細については、https ://cwiki.apache.org/WW/convention-plugin.html を参照してください。可能な機能の多くを理解できるように、十分に確認することを強くお勧めします。

于 2013-03-02T08:02:11.547 に答える