■質問日: |
2003/04/11 |
■最終更新日: |
2007/06/15 |
■質問内容: |
画面Aから画面Bに遷移するときにパラメタを渡したいのですが、 どうすればいいでしょうか? |
■回答内容: |
大きく分けて2つの方法があります。 1)セッションパラメタに値を格納する方法 2)遷移先の画面のpublic(またはprotected)のメソッドを呼び出す方法 いずれにしても、画面Aから画面Bに直接遷移するのではなく 一旦画面AのdoExecute()メソッドに処理を戻してから、遷移するようにします。 |
■添付資料: |
1)セッションパラメタに値を渡す方法 JSPの例: FormBへ遷移する。 FormAのdoExecute()メソッドの例: String sub = this.getSubmitValue(requestParamValues); if ("FormB".equals(sub)) { // セッションパラメタに"NOW"がなかったら追加する。 if (this.getSessionParam().exists("NOW") == null) { // セッションパラメタを追加する。 this.getSessionParam().addParam("NOW", Type.LONG); } // セッションパラメタに現在時刻を格納する。 this.getSessionParam().setLong("NOW", System.currentTimeMillis()); // FormBに遷移する。 HtmlForm form = this.getSession().getFormByName("FormB"); return form; } FormBのinitialize()メソッドの例: // メッセージの消去 this.clearErrorMessage(); this.clearNormalMessage(); // セッションパラメタから現在時刻を受け取る。 long now = sessionParam.getLong("NOW"); paramSet.setTimestamp("NOW", new java.sql.Timestamp(now)); 2)遷移先の画面のpublic(またはprotected)のメソッドを呼び出す方法 みつもり毎度の検索結果表示画面(ListForm)から登録画面(EntryForm)への遷移方法は こちらを使っています。 JSPの例: 1)と同じです。 FormAのdoExecute()メソッドの例: String sub = this.getSubmitValue(requestParamValues); if ("FormB".equals(sub)) { // FormBのインスタンスを生成する。 FormB formB = (FormB)this.getSession().getFormByName("FormB"); // FormBのpublicのメソッドを呼び出す。 formB.setNow(System.currentTimeMillis()); // FormBへ遷移する。 return formB; } FormBのsetNow()メソッドの例: public void setNow(long now) { paramSet.setTimestamp("NOW", new java.sql.Timestamp(now)); } |