• 締切済み

どんなソースコードを書けば良いでしょうか

Javaのソースコードについの質問です。 既存の処理に対するバリデーションの追加を急遽やらなければならなくなったのですが、Javaが初心者過ぎて大混乱しています。 必要な情報を提示できて いるかどうかすら判断がついていないのですが、どうかヒントをご教授いただけませんでしょうか。 パッケージはStrutsを使用しています。 処理はアクションフォームのValidメソッドに記述し、ActionクラスでValidメソッドを呼び出します。(たぶん…) 記述したいのは以下のようなバリデーション処理です。 画面上にコンボボックスが2つあり、それぞれの項目で選択された値の組み合わせによってバリデーションをつけたいです。 以下の条件に当てはまらない場合、Messageクラスに定義したエラーメッセージを表示させます。         (1)A項目の値にイが選択された場合                 B項目の値はあorいorう が選択されている         (2)A項目の値にロが選択された場合                 B項目の値はえorおorか が選択されている   (3)A項目の値にハが選択された場合                 B項目の値はきorくorけ が選択されている リストなどを使えば良いのでしょうか…? ざくっとこんな感じのコードになるのでは?でもちろん構いません。 何卒よろしくお願いいたします。

みんなの回答

  • teketon
  • ベストアンサー率65% (141/215)
回答No.1

>(1)A項目の値にイが選択された場合 > B項目の値はあorいorう が選択されている >(2)A項目の値にロが選択された場合 > B項目の値はえorおorか が選択されている >(3)A項目の値にハが選択された場合 > B項目の値はきorくorけ が選択されている 通常は以下のようにわけます。 (1)A項目が選択された場合  B項目の値はあorいorう が選択されている (2)C項目が選択された場合  D項目の値はえorおorか が選択されている (3)E項目が選択された場合  F項目の値はきorくorけ が選択されている A、B項目間で選択されなかった場合、複数選択された場合のケースが多すぎるため、 それをバリデーションでどう扱うのか、定義する必要があります。 まず、他の方の案が出てきても、ほぼ採用できないですよ。

cpx_
質問者

お礼

お返事が遅くなりまして申し訳ありません。 そうですか…もっと定義を固めて考えることにします。 ご回答いただき誠にありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Rubyのソースコードの読み方

    現在JavaからRubyに移行しようと勉強をしているのですが、Rubyのソースコードを読んでいくと、変数に何が入っているかわからなくて困っています。 ソースコードを例に説明させていただくと、 gs = TCPServer.open(12345) addr = gs.addr こんなソースがあったとして、2行目のgs.addrというメソッドが何をするメソッドなのか知りたいとします。 しかしRubyでは型宣言をしないので、gsが何のクラスなのかわかりません。 そこでTCPServerクラスのリファレンス(http://www.ruby-lang.org/ja/old-man/html/TCPServer.html)を見るのですが、このサイトのクラスメソッド欄にかいてあるTCPServer.openを呼んでも、戻り値の型が書いていません。 このような場合どうやって、gs.addrメソッドの挙動をしればよいのでしょうか?なお現在は動的にデバックするという方法は無しで考えています。 ご回答よろしくおねがいします。

    • ベストアンサー
    • Ruby
  • 例外処理をするソースコードについて

    例外処理するソースコードについて質問があります。 まず例外処理される前のファイルのソースコードを見てください。 public class JTest13 { public static void main(String[] args) { System.out.println("実行開始"); long lngTmp; //以下を実行した瞬間に引数が無いか、整数に直せなかったら例外がスローされる lngTmp = Long.parseLong(args[0]); //割り算を実行する(小数点以下の数値を管理する必要がある)ため、double型に変換します System.out.println(Double.parseDouble(args[0]) / 2); System.out.println("tryブロック終了"); System.out.println("実行終了"); } } ここでアルファベットを入力すると、 実行開始 Exception in thread "main" java.lang.NumberFormatException: For input string: "a" at java.lang.NumberFormatException.forInputString(Unknown Source) at java.lang.Long.parseLong(Unknown Source) at java.lang.Long.parseLong(Unknown Source) at JTest13.main(JTest13.java:20) これで例外処理クラスがNumberFormatExceptionだと分かるんですが、 こういう結果がでなければいけません。 実行開始 例外:java.lang.NumberFormatException For input stirng:"a" 引数を整数で入力して下さい。 実行終了 これで問題なのがmainメソッドで例外処理するのではなく、整数チェック用のメソッド内でエラー処理するプログラムを作らなければならない事です。 変数がargs[0]なのでどうやってメソッドを作っていいのか分かりません。 ヒントだけでいいので、どうぞ宜しくお願い致します。

    • ベストアンサー
    • Java
  • COBOLについて

    COBOLで以下のような仕様の場合、どのようなロジックにするのが良いでしょうか? ・仕様  A項目=値A または  B項目=値B または  (C項目=値C かつ D項目=値D ) または  E項目=値E 上記の場合、何も処理しない(以降の処理もせずに、次レコードを読みに行く  上記以外の場合、処理1を行い、次処理以降の処理を継続する。 (ロジック1) IF A項目=値A OR B項目=値B OR (C項目=値C かつ D項目=値D ) OR E項目=値E THEN CONTINUE ELSE 処理1を行う END-IF. (ロジック2) IF A項目=値A MOVE '1' TO 該当フラグ END-IF. IF B項目=値B MOVE '1' TO 該当フラグ END-IF. IF (C項目=値C かつ D項目=値D ) MOVE '1' TO 該当フラグ END-IF. IF E項目=値E MOVE '1' TO 該当フラグ END-IF. IF 該当フラグ='1' CONTINUE ELSE 処理1 END-IF. 自分は仕様に沿ってロジック1で組むべきだと思うのですが、 ロジック1は分かりずらいのとメンテが大変なのでロジック2で組むべきだと言われました。 どちらで組むのが普通でしょうか?どなたか教えて下さい!

  • 「Javaのクラスメソッド内でsuperキーワードは使える?」

    「Javaのクラスメソッド内でsuperキーワードは使える?」 Java言語仕様(第2版日本語訳初版)(注)の以下の記述をどう解釈するべきでしようか?  「8.4.6継承、オーバーライド、隠蔽」>「8.4.6.2隠蔽(クラス・メソッドによる)」において、staticメソッドがシグネチャが同じスーパークラスのメソッドを隠蔽し、それがインスタンスメソッドであればコンパイルエラーになる、との記述のあと、下記のような記述があります。 『隠蔽されたメソッドは、限定名、あるいはsuperキーワードやスーパークラス型へのキャストを含んだメソッド起動($15.12)を使用することによりアクセスすることができる』 まるで、「インスタンンスメソッドと同じようにクラスメソッドにおいてもsuperキーワードを使用することでスーパークラスのstaticメソッドを呼び出せる」ように読み取れます。 ちなみに該当部分の原典は、  http://java.sun.com/docs/books/jls/download/langspec-2.0.pdfから抜粋  8.4.6.2 Hiding (by Class Methods) (略)  A hidden method can be accessed by using a qualified name or by using a  method invocation expression (§15.12) that contains the keyword super or a cast  to a superclass type. In this respect, hiding of methods is similar to hiding of  fields. また、第3版原典も該当部分は同じ記述でした。  http://java.sun.com/docs/books/jls/download/langspec-3.0.pdf  8.4.8.2 Hiding (by Class Methods) なお、superキーワードについては、同書 15.11.2 「superを使用したスーパークラスのメンバへのアクセス」の項で、 『superキーワードを使用した特殊形式は、インスタンス・メソッド、インスタンス初期化子、コンストラクタ、あるいはクラスのインスタンス変数の初期化子中でのみ有効となる』 とあり、クラスメソッド中では使えないと読み取れます。(続けて、 superとthisの使用条件は全く同じ、としています。) Javaコンパイラは、クラスメソッド中のstaticキーワードを認識せず、エラーとします。 諸兄のお考えをお聞かせください。 注)http://www.amazon.co.jp/Java%E8%A8%80%E8%AA%9E%E4%BB%95%E6%A7%98-Java-%E3%82%B8%E3%82%A7%E3%83%BC%E3%83%A0%E3%82%BA-%E3%82%B4%E3%82%B9%E3%83%AA%E3%83%B3/dp/4894713063/ref=sr_1_2?ie=UTF8&s=books&qid=1270203134&sr=1-2

  • java/strutsのFormの役割について

    現在java/Strutsで開発を行なっています。 DB接続クラス(以下opeクラス)への値の受け渡しは、Beanクラスで行なっています。 ※単一項目の場合はBeanクラスは使用せず、そのまま渡す場合もあります。 (1)画面の入力項目をopeクラスへ渡す場合のFormクラスからBeanクラスへの変換(値の詰め替え) (2)opeクラスから返却される検索結果のBeanクラス⇒Formクラスへの変換(値の詰め替え) (1)、(2)の処理はどこに持つべきものでしょうか? 現在のクラス構成は  XXXForm⇒strutsのFormクラス  XXXAction⇒strutsのActionクラス  XXXCtrl⇒Actionから呼ばれるビジネスクラス  XXXope⇒⇒ビジネスクラスから呼ばれるDB接続クラス  XXXBean⇒opeとの値のやり取りを行なうクラス   自分はビジネスクラスに実装をしようと思ったのですが Formクラスに実装するべきだ、といわれました。 値の紐付けの意味もこめて、Formに変換メソッドを持つべきらしいです。 変換にあたって、基本そのまま値を設定する前提です。 (少しだけロジックも存在しますが、A変数の値が~だったらB変数に値を入れる程度) 自分的にはFormクラスは画面、BeanクラスはDB接続とのやり取り それぞれ位置づけが異なるため、FormクラスにBeanクラスを宣言するのはどうかと思いました。 本来はどのような形が正しいのでしょうか?

    • ベストアンサー
    • Java
  • 処理内容がほぼ同じメソッドのまとめかたについて

    Javaにおいて、処理内容がほぼ同じメソッドを上手くまとめるにはどうすればよいでしょうか? もう少し具体的に説明をさせて頂きます。 例えば、以下の様なメソッドA, Bがあるものとします。 https://gist.github.com/4187704 この時、例外処理をしている共通部分を二重に書かず、処理が違う部分だけを実装するようにするにはどのようにすればよいでしょうか? というのが、質問の主旨になります。 色々調べた所、Template Methodパターンというものがあるのを知りましたが、自分の場合は、同様のメソッドが20個ほどあり、Template Methodパターンを使うとクラス数が膨大になってしまうため、なるべくクラスを増やさずに済む方法があれば教えていただきたいと思います。 よろしくお願い致します。

    • ベストアンサー
    • Java
  • javaに"search"という関数 or メソッドはあるのでしょうか?

    javaに"search"という関数 or メソッドはあるのでしょうか? webサイトで探しても見つかりません。 出てくるのはExcelのsearch関数が出てきます。 もし、Javaに"search"関数 or メソッドがあるならば、どのような 機能(働き)なのでしょうか? Javaで"search"を見かけたのは、 こういった文です。 *********************************** AAA:クラス a:インスタンス(オブジェクト) b:インスタンス(オブジェクト) eee:データベースのPrimaryキー fff:データベースのPrimaryキー AAA a = b.serch(eee, fff); if(a = null) { ・・・・・省略・・・・・ } ************************************ また、searchについてwebサイトがあれば 教えて頂きたいのですが、 どなたか宜しくお願いします。

    • ベストアンサー
    • Java
  • イベントとリスナーに関すること

     Javaの初心者です。AWTについてご質問します。 処理をしたい手順として (1) したい処理の手順の選択(Aの処理か、Bの処理か、のように)をRadio Button で選択し (2) データの入力(Aの処理に対するデータ、Bの処理に対するデータ、の入力)を行い (3) それぞれの処理の実行と結果の表示、これをButton で促す。 の手順でプログラムを行いたいのです。((1)と(2)を逆にすれば実行できることは確認しましたが、何とか自然な形でということで上記の手順で行いたいのです。)  私の作ったプログラムではリスナーの中から内部クラスで定義された別のリスナーを呼び出すという形になってしまいます。これではだめらしいのです。呼び出し側で、その内部クラスの生成を行った後、実行のためのメソッドにはenableを使ってしまいました。どのメソッドを添えたらよいのかわからなくて苦し紛れに使いました。 内部クラスの初期設定の部分までは実行されているのですが、イベントハンドラであるactionPerformedの中で書かれた命令は実行されていません。 AWTに堪能な方、お時間を煩わせて申し訳ありませんが、お教えくださいますようお願い申し上げます。

    • ベストアンサー
    • Java
  • サーバから別のサーバへ実行命令

    Tomcatで起動されたA,B2台のWEBサーバがありまして、 Aの方から、Bのあるメソッドを実行させたいという場合 javaではどのような処理を行えばよろしいのでしょうか?可能でしょうか

    • ベストアンサー
    • Java
  • strutsのhtmlタグのfileについて

    Strutsを使用してファイルのアップロード機能を考えています。 (1)ウェブブラウザ上でアップしたいファイルを選択 (2)バリデーションで入力チェックを行う (3)バリデーションで入力チェックに引っかかる (4)(1)で選択したファイル情報が消える という事象が発生します。 textで設定されている項目については、(3)でひっかかっても値を再度webブラウザ上に表示することが可能です。アップロードファイルのデータをバリデーションで引っかかっても保持し続けるということは可能でしょうか?どなたかご存知のかたがいらっしゃいましたら、ご教授ください。よろしくお願いします。 言語:JAVA OS:Win XP

    • ベストアンサー
    • Java
このQ&Aのポイント
  • ぷららの今月の利用料が、今月含め、過去をさかのぼっても0円なのはなぜでしょうか?
  • プロパイダ契約している場合は、利用料金が表示されるはずなのに、ぷららの利用料がずっと0円なのはどうしてでしょうか?
  • ひかりTVのサービスやISPぷららについての質問ですが、ぷららの利用料がなぜか過去も含めてずっと0円なのですが、これはどういうことなのでしょうか?
回答を見る