SAStrutsでのActionのプロパティの型について
httpからもらうプロパティは基本的にStringで受け取る。
そうしないとクラスの型が合わずにNumberFormatExceptionなどが発生してしまう。
以下のような流れで処理が走っているらしい。
(strutsの常識?)
1.アクセスされる。
http://***.co.jp/hoge/exec/param1=123
2.まずはここへ問答無用で差し込まれる
hogeクラス
@LongType(target="exce")
public String param1; ←ここ!!
3.その後、指定のバリデートが発動。
(この場合はLongにキャストできるか検証する)
hogeクラス
@LongType(target="exce") ←ここ!
public String param1;
この為、httpでもらうパラメータは全てStringにしておく必要がある。
無事にexceメソッドの中に入って来た段階で、
param1はLongとしてインスタンスを生成出来ることが確約されているので
Long.parseLong(param1);
として使っても問題ないということになる。
でも・・・
@LongType(target="exce")
public Long param1;
って出来たほうが嬉しいな。
Longに出来ない時点で先のメソッドに進めないことは間違いないんだし。
パラメータ多いとparseも多くなって見辛いし。