[Seasar-user:5316] Re: [S2JSF] ボタン使用時にパラメータを渡せない

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2006年 11月 29日 (水) 15:56:27 JST


米林です。

From: "onishi" <[E-MAIL ADDRESS DELETED]>
Sent: Wednesday, November 29, 2006 3:32 PM

> おおにしと申します。
>
> 過去のメーリングリストを見てみて、当てはまるものがあったのですが、
> 文字化けしてて肝心な所が全く読めなかったので質問させていただきます。
>
> 以下の用にするとパラメータを渡せません。
> リンクを使うと問題なくパラメータは渡せます。
>
> <input type="button" value="データ照会" m:action="#{hogeAction.hoge}">
>   <span m:inject="f:param" m:name="menuNo" m:value="menuNo" />
> </input>
>
> アクションクラスにはmenuNoのフィールドとsetterを記述しています。
>
> サンプル解説を見ると、普通に書かれているのでパラメータを渡せると思っています。
> 何が原因なのでしょうか?

s2jsf-exampleのforeach/forEachResult.htmlの31行目に以下を追加して
m:actionをaddAction.hogeに変更。
=======================================================================
<input type="button" m:action="#{addAction.hoge}" value="to ResultPage"
  onclick="location.href='forEachResult.html'">
  <span m:inject="f:param" m:name="index" m:value="#{i}"/>
  <span m:inject="f:param" m:name="menuNo" m:value="menuNo"/> ※この行
</input>

=======================================================================

examples.jsf.action.impl.AddActionImplに以下を追加。
=======================================================================
private String menuNo;
public void setMenuNo(String menuNo) {
    System.out.println("###called setter###[" + menuNo + "]");
    this.menuNo = menuNo;
}
public String hoge() {
    System.out.println("###called addAction.hoge###");
    return null;
}
=======================================================================

上記を実行するとパラメータを渡せるのが確認出来ると思います。
パラメータで渡そうとするオブジェクトのスコープがRequestに
なっているのではないでしょうか?
ですので、パラメータが渡せないのでは無く
意図した値が得られないという事ではないかと思うのですが
いかがでしょう?

---
米林 正明
[E-MAIL ADDRESS DELETED]




Seasar-user メーリングリストの案内