SAStrutsとStrutsのアクションのスコープの違い
SAStrutsとStrutsはアクションのコンポーネントの
スコープが異なっているので注意しなければならない。
アクションのスコープの違い
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!