[Seasar-user:4444] 無設定S2Strutsの基本的な質問
橋本 昇
[E-MAIL ADDRESS DELETED]
2006年 8月 30日 (水) 14:44:47 JST
橋本と申します。
初めての投稿ですが、よろしくお願いします。
現在無設定S2Strutsを勉強中なのですが、どうも良くわからない所があります。
非常に基本的な質問ばかりですが、どなたかご教授願願えないでしょうか?
[質問1]
通常Strutsを利用した場合の流れは下記のようになると思います。
1.ActionServlet
↓
2.Action
↓
3.JSP
↓
4.submit
↓
1.へ戻る・・・
無設定S2Strutsの基本的な流れは下記のような解釈でよろしいでしょうか?
1.JSP→initタグによってxxxInitAction(pojo)の初期化メソッド呼び出し(ポス
トバックを考慮)
↓
2.submit
↓
3.ActionServlet
↓
4.Action(Pojo)
↓
1.へ戻る・・・
[質問2]
質問1が仮に正しいとした場合、ActionServletから処理が開始されないため、
Strutsのモジュール機能が利用できないような気がします。(カレントモジュー
ルを決定できないため)
無設定S2StrutsはStrutsのモジュール機能は利用しない、といいますか、デフォ
ルトモジュールのみ利用を想定しているのでしょうか?
そもそもモジュール機能はstruts-configの肥大化の対処策なはずですので、無
設定S2Strutsには必要がない機能なのかもしれません。
[質問3]
質問1が仮に正しいとした場合、すべてのJSPを指し示すglobal-forwardが欲し
くなってしまいます。
あくまでも私の好みですので、一般的かどうかは解りません。(^-^;;
たとえば
他の画面に遷移するためのアンカーが画面にある場合は<html:link
forward="xxxx"/>を利用、
Action(pojo)からの画面遷移もlocal-forward?ではなく、global-forward
(redirect=true)を利用して移動など。
基本的にlocal-forward?はsuccessのみの利用となります。
global-forwardを自動登録する方法やアイディアは何かありませんか?
[質問4]
初期化処理用のxxxInitActionと、その他のイベント処理用のxxxActionに分ける
理由が良くわかりません。
動く、動かないでいえば、xxxActionにinitializeメソッドを作成しても動作す
るように思えます。
初期化処理のみを別クラスにすると、クラス数が増えるので、チームでの受けが
悪くなる気がしているのです。
分けるのであれば、理由が欲しいのです。私都合でごめんなさい。m(__)m
ひょっとしたらJSFを意識した何かがあるのでしょうか?
(私はJSFは未経験なので良くわからないのです)
それともUnitTest上のメリットなのでしょうか?
[質問5]
initタグから呼び出される初期化メソッドの中ではポストバックかどうかを判断
する方法が必要だと思いますが、なんらか標準的な推奨テクニックはあるので
しょうか?
もしないのであれば、現在下記のようなアイディアを考えております。
(質問1が仮に正しいとした場合のみ有効ですが・・)
1.画面遷移はJSPに対して、かつ、必ずredirect=trueで行う
2.*.doなど、ActionServletに対するリクエストには強制的にリクエストスコー
プに"postback=true"を格納するフィルターを作成する(JSPにいく場合には何も
しません)
3.xxxInitAction(pojo)に下記のようなコードを記述する
public class XXXInitActionImpl implements XXXInitAction {
private boolean postback = false;
public void setPostback(boolean postback){
this.postback = postback;
}
public boolean isPostback(){
return postback;
}
public String initialize(){
if(isPostback()){
//2度目以降の処理
}else{
//初期化処理
}
return null;
}
}
このアイディアでポストバック実装は問題ないでしょうか?
いきなり多くの質問かつ、質問1が間違いの場合、ほぼ全滅な質問内容ですが、
どなたかご教授願えないでしょうか?
Strutsは利用経験がありますので、Struts用語は理解できると思います。
よろしくお願いします。
Seasar-user メーリングリストの案内