• ベストアンサー

strutsプログラミングでの疑問

初心者質問で恐縮です。 以下のように(1)アクションフォームと(2)JSPに設定して、idが未入力(null)でサブミットされた場合の(3)アクションをif文で分岐させたいのですが、条件の設定はどのようにすればいいのでしょうか? (1)アクションフォーム(java)の設定(抜粋)   private int id;  //IDをint型に設定 (2)登録フォーム(JSP)の設定(抜粋)   <input type="text" name="id" > <%--IDを登録する--%> (3)アクション(java)の条件分岐の設定(抜粋)   int input_id = aform.getId();   if(input_id==null){   } nullにするとエラーになってしまいます。

質問者が選んだベストアンサー

  • ベストアンサー
  • process9
  • ベストアンサー率29% (81/271)
回答No.2

なら、エラー内容そのままの意味ですね。 javaでは、int型は、null値は取れなかったじゃないかな? idをIntegerクラスで置き換えるか、以下のように初期値の0で比較すればいいのでは? if(input_id==0){ }

liony_2003
質問者

お礼

その通りでした。サブミットボタンを押したときのアクションをコンソールで確認しましたところ、未入力(ブランク)の場合はinput_idは「0」として受け取っていることが分かりました。 よって、 if(input_id==0){ } で条件設定はOKでした。

liony_2003
質問者

補足

すいません補足欄から失礼しますが、お礼を書くのを忘れておりました。 このたびは回答いただき、本当にありがとうございました。 おかげで解決できました。

その他の回答 (3)

  • mura333
  • ベストアンサー率42% (3/7)
回答No.4

本題と外れていますが・・。 > 『Stringで受けて・・・』というのは、String型にキャストするということでしょうか? String型で受けて(フォームはString型変数で定義して)、intに変換ということを言ってます。 「intに変換」については、Integer.parseInt()を見れば分かると思います。

liony_2003
質問者

お礼

なるほどだんだんわかってきました。 フォームにはStringで定義して、加工する際にInteger.parseInt()を使ってint型に変換するということですね? このたびはどうもありがとうございます。

  • Healer99
  • ベストアンサー率31% (7/22)
回答No.3

解決したのなら良いですが、"0"が入力された場合と区別が付かないのでは? JavaScriptでエラーとするか、 バリディエイタ(入力チェック)を導入するか、 Actionで拡張するか、 Stringで受けて自分で拡張するか、 これらのどれかを選択したほうがきれいです。

liony_2003
質問者

補足

なるほど。検討させていただきます。 ただ今のところ今回の仕様に関しては、ミス入力以外の場合を除いて「0」を入力することはあり得なくて、また、ミス入力で「0」を入力したとしてもブランクの場合に走るアクションと同じで問題ないため、このままでいこうと思っています。 『Stringで受けて・・・』というのは、String型にキャストするということでしょうか? キャストは一度試してみたのですが私の設定が間違っているからだと思いますが、罰点が表示されてしまいました。 パターン1およびパターン2どちらも 「intからString型に変換はできません」 と表示されます。 パターン1 String a; a = (String)input_id ; パターン2 input_id = (String)input_id お恥ずかしい内容だとは思いますが、教えていただければ幸いです。

  • process9
  • ベストアンサー率29% (81/271)
回答No.1

エラー内容は?

liony_2003
質問者

補足

エラー内容につきましては、エクリプスでコーディングしていまして、上記のようにコーディングした段階で左側に赤の罰点が表示され、ポインタをあわせると、 「演算子==は引数の型int,nullで未定義です。」 とでます。

関連するQ&A