2008年10月14日火曜日

SAStrutsで"?hoge=1&hoge=2"を配列で取得

スズキです。

下記のように、同じ名前で値の違う複数のパラメータを送ったとき、
http://suz-lab.blogspot.com/2008/10/jquerygetjsonp2v21.html
サーバ側(SAStruts)でどう取得するか?についてです。

まあ、下記のように配列を使うことで、
簡単に実現することができ、非常に直感的です。

-------- リクエスト
hoge/receive?hoge=1&hoge=2

-------- コード
public class HogeAction {
  public String[] hoge;
  @Execute(validator = false)
  public String receive() {
    System.out.println("##############" + hoge[0]);
    System.out.println("##############" + hoge[1]);
    return null;
  }
}

-------- 結果
##############1
##############2

ただ、値が数字ということで、

public int[] hoge;

とすると、以下のような例外が発生します。

--------
org.seasar.framework.beans.IllegalPropertyRuntimeException:
[ESSR0059]クラス(suz.example.sastruts.action.HogeAction)
のプロパティ(hoge)の設定に失敗しました。理由は
org.seasar.framework.beans.IllegalPropertyRuntimeException:
[ESSR0059]クラス
(suz.example.sastruts.action.HogeAction$$EnhancedByS2AOP$$8b8a47)
のプロパティ(hoge)の設定に失敗しました。理由は
org.seasar.framework.exception.SIllegalArgumentException:
[ESSR0094]IllegalArgumentExceptionがクラス
(suz.example.sastruts.action.HogeAction)の型
(class [I)のフィールド(hoge)に
型([Ljava.lang.String;)の値([Ljava.lang.String;@bcb23e)
を設定するときに発生しました。対象のクラスは
(suz.example.sastruts.action.HogeAction$$EnhancedByS2AOP$$8b8a47)
です。
--------

public Integer[] hoge;

としても、ほぼ同様の例外が発生します。

--------
org.seasar.framework.beans.IllegalPropertyRuntimeException:
[ESSR0059]クラス(suz.example.sastruts.action.HogeAction)
のプロパティ(hoge)の設定に失敗しました。理由はorg.seasar.framework.beans.IllegalPropertyRuntimeException:
[ESSR0059]クラス
(suz.example.sastruts.action.HogeAction$$EnhancedByS2AOP$$8b8a47)
のプロパティ(hoge)の設定に失敗しました。理由はorg.seasar.framework.exception.SIllegalArgumentException:
[ESSR0094]IllegalArgumentExceptionがクラス
(suz.example.sastruts.action.HogeAction)の型
(class [Ljava.lang.Integer;)のフィールド(hoge)に
型([Ljava.lang.String;)の値([Ljava.lang.String;@bcb23e)
を設定するときに発生しました。対象のクラスは
(suz.example.sastruts.action.HogeAction$$EnhancedByS2AOP$$8b8a47)
です。
--------

これで、jQueryとSAStrutsがかなりつながってきたぞ!

--
http://suz-lab.blogspot.com/

0 コメント: