- - PR -
JSP→Actionで受取ったActionFormの初期値
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-02-23 11:35
JSPから送信されたデータをActionでActionFormとして渡されますが、
未入力項目であっても、Stringなら""(空文字)、数値なら"0" が セットされてしまいます。 これを未入力項目ならセットしたくないのですが、上手くいきません。 JavaScript以外で、どうにかならないでしょうか。 コードは以下の感じです。 // ActionForm HogeForm ext ActionForm { String str = "初期値"; getter&setterのメソッド } //JSP <form action="HogeAction"> <input type="text" name="str" value="" readonly/> <input type="submit" value="送信"/> </form> // Action HogeAction ext Action { execute(パラメタ) { HogeForm form = (HogeForm)パラメタのform; // "初期値"ではなく、""(空文字)が出力される System.out.println(form.getStr()); return ---; } } |
|
投稿日時: 2006-02-23 12:26
入力していないフィールドは空の文字列が埋まっているわけですから、POSTなりGETしたタイミングで空の文字が入るのは正常ではないでしょうか?
未入力、と「フィールドを空のままにしておいた」状態は区別つきませんので・・・。 |
|
投稿日時: 2006-02-23 12:48
セットしたくないとはどういうことなのでしょうか?
こんなんじゃだめなのかしら? フォームにこんなメソッドを持たせて。 public String showStr() { getStr() == null || getStr().length() == 0 { return "初期値"; }else { return getStr(); } } JSPで表示するところはこっちを呼び出します。 値をに変更があったかどうかっていうならまた他の処理が必要ですが。 |
|
投稿日時: 2006-02-23 12:56
インギさん
返答ありがとうございます。 自分のミスでvalue=""をタイプしてしまいました。 実際は以下の通りvalueを指定しておりませんが、何も入力しなくても Actionで受取ったときにはActionFormの初期値が変更されて しまっています。 <input type="text" name="str" readonly/> |
|
投稿日時: 2006-02-23 13:07
未記入さん
実は今回やりたいのが、DynaActionFormをBeanにコピーして、 このBeanを使ってHibernateでデータを取りたいんです。 Beanを丸ごとパラメタとして渡すんで、null以外プロパティに 入っていると、余計なフィルタがかかってしまいます。 できれば、Strutsのどっかのクラスラップしてできれば楽だな、 と思ってるんで、プロパティ全部には適用するのは辛いです。 |
|
投稿日時: 2006-02-23 15:21
Strutsをそのまま使用している状態では
JavaScriptを駆使しようとも不可能です。 StrutsでPOSTデータをFormにセットしているクラスを 継承した新しいクラスを作成するのが、最も早いと思います。 |
|
投稿日時: 2006-02-23 15:49
>自分のミスでvalue=""をタイプしてしまいました。
value を記載していようとしていまいと、空の文字列がブラウザがから送られてくるのには変わりありませんよ。 |
|
投稿日時: 2006-02-23 17:42
Formにpopulateしているところのソースを変えれば、
nullにすることができると思いますよ。 intの場合は、Integer持ちとかにするしかないですね。 |