SAStrutsとStrutsのアクションのスコープの違い

SAStrutsStrutsはアクションのコンポーネント
スコープが異なっているので注意しなければならない。


アクションのスコープの違い

Struts singleton
SAStruts request

Strutsのアクションが持つフィールド

複数のスレッド間で共有される一方、
冗長化構成のマシン間では共有されない。
このようなクセがあるために、使用を避ける、
もしくは、慎重に使う必要がありました。
(使用禁止にしていたプロジェクトも多いと思われる)

SAStrutsのアクションのフィールド

他のスレッドに影響を及ぼさないrequestスコープなので、
気軽にどんどん使用することができる。


ちなみに、アクションのフィールドをpublicフィールドとして
宣言しておくと、次のようにJSP側のEL式で簡単に呼び出すことができる。


HogeAction.java

package tutorial.action;
import org.seasar.struts.annotation.Execute;

public class HogeAction {

    public String xxx;

    @Execute(validator = false)
    public String fuga() {
        xxx = "Hello World!";
        return "fuga.jsp";
    }
}


fuga.jsp

<html>
<body>
  ${f:h(xxx)}
</body>
</html>


http://localhost:8080/sa-struts-tutorial/hoge/fuga の出力結果

Hello World!