質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

4回答

16344閲覧

必須項目に値が入らなかった場合エラーにする

kumatarou

総合スコア33

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2015/11/26 08:42

javaの勉強をしながら名刺を管理するwebアプリケーション開発をしています。

ユーザーの情報を受け付ける画面で、会社名、姓名を入れなかった場合は
会社名、姓名を入れてくださいというエラー画面に流したいと考えています。
会社名、姓名を入れた場合は確認画面に流したいと思いservletを作ったのですが
エラーが起きています。

java

1//リクエストパラメーターの文字コードを指定 2 request.setCharacterEncoding("UTF-8"); 3 4 //リクエストパラメーターを取得した後、Account型インスタンスに情報格納 5 Account account = new Account(); 6 account.setBusinessUnit(request.getParameter("business_unit")); 7 account.setDivision(request.getParameter("devision")); 8 account.setSection(request.getParameter("section")); 9 account.setLastName(request.getParameter("last_name")); 10 account.setFirstName(request.getParameter("first_name")); 11 account.setLastNameKana(request.getParameter("last_name_kana")); 12 account.setFirstNameKana(request.getParameter("first_name_kana")); 13 account.setCompanyName(request.getParameter("company_name")); 14 account.setCompanyNameKana(request.getParameter("company_name_kana")); 15 account.setZipCode(request.getParameter("zip_code")); 16 account.setMunicipality(request.getParameter("municipality")); 17 account.setAddress(request.getParameter("address")); 18 account.setTelDirect(request.getParameter("tel_direct")); 19 account.setTelMain(request.getParameter("tel_main")); 20 account.setEmail(request.getParameter("email")); 21 account.setFax(request.getParameter("fax")); 22 account.setUrl(request.getParameter("url")); 23 account.setCorpNote(request.getParameter("corp_note")); 24 25 26 //HttpSessionインスタンスの取得 27 HttpSession session = request.getSession(); 28 session.setAttribute("Account", account); 29 30 31 //フォワード先 32 String forwardPath = null; 33 34 forwardPath = "WEB-INF/jsp/RegisterCheck.jsp"; 35 36 //リクエストパラメーターをチェック 37 String errorMsg = ""; 38 if(companyName == null || companyName.length() == 0){ 39 errorMsg += "会社名が入力されてません"; 40 forwardPath = "WEB-INF/jsp/Err.jsp"; 41 42 } 43 if(lastName == null || lastName.length() == 0){ 44 errorMsg += "姓が入力されてません"; 45 forwardPath = "WEB-INF/jsp/Err.jsp"; 46 } 47 48 if(firstName == null || firstName.length() == 0){ 49 errorMsg += "名が入力されてません"; 50 forwardPath = "WEB-INF/jsp/Err.jsp"; 51 }

この3個所でを変数に~解決できません
~を解決できません。と表示されてしまいます。

if(companyName == null || companyName.length() == 0){
if(lastName == null || lastName.length() == 0){
if(firstName == null || firstName.length() == 0){

エラーを無くして、必須項目に値が入らなかった場合エラーにしたい場合どう変更すれば宜しいでしょうか?
ご教示願えると幸いです。

*環境
mysql 5.7
windows7

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ローカル変数 forwardPath の値は使用されていません
上記はエラーではなく警告ですね?

これは、宣言し、値の代入はしているが、値を使用していない場合に表示されるものです。

forwardPathを使用して遷移先を指定する処理を実施していないのではないでしょうか。

投稿2015/11/27 00:25

moredeep

総合スコア1507

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kumatarou

2015/11/27 01:47

>上記はエラーではなく警告ですね? 警告ですね・・・申し訳ございません RequestDispatcher dispatch = request.getRequestDispatcher(forwardPath); dispatch.forward(request, response); にしたら無事に出来ました。ありがとうございました!
guest

0

companyNameはAccountというモデルのプロパティとのことなので、入力チェックのプログラムではAccountモデルのインスタンスaccountを経由してアクセスしないと取得できませんね。

例えば、
if(companyName == null || companyName.length() == 0){

==>

if(account.getCompaneName() == null|| account.getCompanyName().length() == 0){

投稿2015/11/26 09:05

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kumatarou

2015/11/26 09:23

そうです!そう書きたかったのです!ありがとうございます! また、わかりやすくコードを書いて頂きありがとうございます エラーそのものは無くなったのですが、 ローカル変数 forwardPath の値は使用されていません と出てきて、実行すると当たり前ですがforwardPathが効いていません・・・ String forwardPath = null;の下で値を指定しているにも関わらずなぜこのエラーが起きるのでしょうか? 表題とは違った質問になってしまいますが、ご教示して頂けると幸いです。
guest

0

ベストアンサー

Web画面の入力項目から、lastName, firstName, companyNameを取得する部分がありません。

java

1String lastName= request.getParameter("lastName"); 2String firstName= request.getParameter("firstName"); 3String companyName= request.getParameter("companyName");

このようにして、リクエストパラメーターから入力フォームのデータを取得して下さい。
getparameterの引数に渡す文字列は、inputタグのnameの値です。

投稿2015/11/26 09:00

shanxia

総合スコア1038

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kumatarou

2015/11/26 09:14

回答ありがとうございます この部分を account.setCompanyName(request.getParameter("company_name")); account.setLastName(request.getParameter("last_name")); account.setFirstName(request.getParameter("first_name"));                    ↓このように変更すれば宜しいですか? String lastName= request.getParameter("lastName"); String firstName= request.getParameter("firstName"); String companyName= request.getParameter("companyName"); 勉強を始めたばかりなので理解が追いつかず申し訳ございません。
shanxia

2015/11/26 14:11 編集

いえ、accountの部分を見ていませんでした。 今回の場合だと、次の様な3行を追加すると良いかと思います。 String companyName = account.getCompanyName(); String lastName = account.getLastName(); String firstName = account.getFirstName();
kumatarou

2015/11/26 14:34

回答ありがとうございます。 載せて頂いた3行を追加しますとエラーは消えるのですが forwardPath = "WEB-INF/jsp/RegisterCheck.jsp";←この部分でローカル変数 forwardPath の値は使用されていませんと表示されてしまいます。 String型にforwardPathを入れているため反応してくれないのでしょうか?
shanxia

2015/11/27 00:05

forwardPathには、遷移先のURLを代入しているのですね? それならば必須項目チェックの後に、dispatcherへセットして下さい。 RequestDispatcher dispatch = request.getRequestDispatcher(forwardPath); dispatch.forward(request, response);
kumatarou

2015/11/27 01:45

エラーも無くなり無事にエラーページに飛べました! ありがとうございました!
guest

0

lastName, firstName, companyNameという3つの変数は宣言されていますか?

投稿2015/11/26 08:50

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kumatarou

2015/11/26 08:56 編集

回答ありがとうございます Accountというmodelで宣言しています。 private String companyName; //会社名 private String lastName; //姓 private String firstName; //名 this.companyName = companyName; this.lastName = lastName; this.firstName = firstName; public String getCompanyName() { return companyName; } public void setCompanyName(String companyName) { this.companyName = companyName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } 長くなってしまいましたがお願い致します
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問