2

現在、Struts 2を評価しています。公式ドキュメントには、次のJavaおよびJSPコードを含むHelloWorldの例が含まれています。

Java

import com.opensymphony.xwork2.ActionSupport;

public class HelloWorld extends ActionSupport {

    public static final String MESSAGE = "Struts is up and running ...";

    public String execute() throws Exception {
        setMessage(MESSAGE);
        return SUCCESS;
    }

    private String message;

    public void setMessage(String message){
        this.message = message;
    }

    public String getMessage() {
        return message;
    }
}

JSP

<%@ taglib prefix="s" uri="/struts-tags" %>

<html>
    <head>
        <title>Hello World!</title>
    </head>
    <body>
        <h2><s:property value="message" /></h2>
    </body>
</html>

この例では、次のXMLファイルを使用して、このアクションのURLを指定し、アクションとビューを結び付けます。

<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <package name="tutorial" extends="struts-default">
        <action name="HelloWorld" class="tutorial.HelloWorld">
            <result>/HelloWorld.jsp</result>
        </action>
    </package>
</struts>

私の質問は(最後に)次のとおりです。これは本当にStruts2の最先端ですか?XML構成と特定の基本クラス(ActionSupport)のサブクラス化の必要性は廃止されたと私は信じるようになりました。代わりにアノテーションを設定に使用できると思いました。

より具体的な質問がいくつかあります。

  • リクエストタイプごとに1つのActionクラスを用意する必要がありますか、それともeactionに複数のメソッドを定義して、それぞれが異なるリクエストを処理できるようにすることは可能ですか?
  • ビューで使用できるようにするデータメンバー(上記の例では「メッセージ」)のパブリックゲッターとセッターを定義する必要がありますか?

これがStruts2の最先端である場合、Struts1に比べてそれほど改善されていないように見えますが、これは単なる悪い例だと思います。

ありがとう、ドン

4

3 に答える 3

1

例は古いスタイルの struts2 です。@pgb が言うように、アノテーションはほぼすべてのものに使用できます。

また、2 つの異なる構成スタイルが利用可能です。1つは「コンベンション」と呼ばれ、もう1つは「注釈」です。規約はレールの影響を受け、パス/ネーミングによってアクションと結果の間のデフォルトのバインディングを作成します。注釈を使用して、xml で行ったようにすべてを宣言しますが、コントローラー クラス内でのみ宣言します。どちらも非常に単純化されていることがわかり、現在、大規模なサイト用に小さな xml ファイルのみを使用して実行しています。

于 2009-04-24T18:36:52.170 に答える
1

いくつかの回答 (すべてではない):

  • 複数のメソッドを同じ Action クラスに追加できます。それぞれが文字列を返す必要があります。
  • public getter と setter が必要だと思います。
  • 提供される基本クラスは、定数 SUCCESS などの特定の有用な値のみを定義します。

「Zero Configuration」機能 ( zero conf doc )を使用して注釈を使用できます。

于 2009-04-24T17:46:04.743 に答える