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

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

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

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

Q&A

2回答

7706閲覧

Java・JSP・サーブレットを使った掲示板作成

gamebox

総合スコア13

Java

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

0グッド

0クリップ

投稿2016/05/30 11:37

##背景
現在、javaを使って簡易掲示板を作成しています。
プログラムについては、参考書のサンプルを使い、
以下の機能を追加したいと考えています。

・入力フォームの未入力チェック(名前・メルアド・タイトル・内容)
・チェックに引っかかったものは、エラーメッセージを表示し、投稿しない。

以下のことを実現したいです。

--jsp側(入力画面)----

エラーメッセージ欄に表示させたい内容(全件未入力の場合)

名前が未入力です。
メルアドが未入力です。
タイトルが未入力です。

エラーメッセージ欄に表示させたい内容(1件未入力の場合)

メルアドが未入力です。

エラーメッセージは、現在文字列結合を使って表示させています。
String err_message = err1 + err2 + err3
request.setAttribute("err_message",err_message);
※err1・err2・err3は、個別にエラーメッセージを格納している。
これを上記のようにするには、どうしたら宜しいでしょうか?

現在の表示

(全件表示の場合)
名前は未入力です。メルアドが未入力です。タイトルが未入力です。

(1件表示の場合)
NULLNULLタイトルが未入力です。

##ソースコード(参考書サンプル)

import java.io.;
import javax.servlet.
;
import javax.servlet.http.*;

public class BBSServlet extends HttpServlet {

///////////////////// メンバ変数 ///////////////////

ServletContext sc;
BBSManagerBeans bbsManager;

///////////////////// 初期化 ///////////////////

public void init(ServletConfig config)
throws ServletException
{
super.init(config);
sc = getServletContext();

String dataPath = config.getInitParameter("datapath"); if (dataPath == null) { dataPath = ""; } bbsManager = (BBSManagerBeans)sc.getAttribute("bbsmanager"); if (bbsManager == null) { bbsManager = new BBSManagerBeans(dataPath); sc.setAttribute("bbsmanager",bbsManager); }

}

///////////////////// "POST"メソッド ///////////////////

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
doGet(request, response);
}

///////////////////// "GET"メソッド ///////////////////

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
BBSDataBeans bbsData = new BBSDataBeans();

String data = request.getParameter("function"); if (data == null) { doBBSRead(request, response, bbsData); } else if (data.compareTo("WRITE") == 0) { doBBSWrite(request, response, bbsData); } else if (data.compareTo("DELETE") == 0) { doBBSDelete(request, response, bbsData); } request.setAttribute("bbsdata",bbsData); sc.getRequestDispatcher("/bbs.jsp").forward(request, response);

}

bbsManager.DeleteItem(index, password); bbsManager.ReadArticles(0, bbsData);

}

///////////////////// メッセージの投稿 ///////////////////

public void doBBSWrite(HttpServletRequest request, HttpServletResponse response, BBSDataBeans bbsData)
throws IOException, ServletException
{
BBSItem item = new BBSItem();

item.name = KanjiConv.ConvJStr(request.getParameter("name")); if (item.name == null) item.name = ""; item.email = KanjiConv.ConvJStr(request.getParameter("email")); if (item.email == null) item.email = ""; item.subject = KanjiConv.ConvJStr(request.getParameter("subject")); if (item.subject == null) item.subject = ""; item.content = KanjiConv.ConvJStr(request.getParameter("content")); if (item.content == null) item.content = ""; item.deleteKey = KanjiConv.ConvJStr(request.getParameter("pass")); if (item.deleteKey == null) item.deleteKey = ""; bbsManager.AddItem(item); bbsManager.ReadArticles(0, bbsData);

}

///////////////////// メッセージの読み出す ///////////////////

public void doBBSRead(HttpServletRequest request, HttpServletResponse response, BBSDataBeans bbsData)
throws IOException, ServletException
{
int index, lastIndex;
String strIndex = request.getParameter("index");
if (strIndex != null) {
index = Integer.parseInt(strIndex);
}
else {
index = 0;
}

bbsManager.ReadArticles(index, bbsData);

}

public void destroy()
{
}
}

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

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

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

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

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

guest

回答2

0

個別ではなく一箇所にまとめて表示するなら以下のようなイメージでしょうか。

Java

1//改行コード 2String BR = System.getProperty("line.separator"); 3 4StringBuilder sb = new StringBuil> 引用テキストder(); 5if(err1 != null){ 6//err1がnullでない時のみメッセージを保持 7 sb.append(err1).append(BR); 8} 9if(err2 != null){ 10//err2がnullでない時のみメッセージを保持 11 sb.append(err2).append(BR); 12} 13if(err3 != null){ 14 sb.append(err3).append(BR); 15} 16 17request.setAttribute("err_message",sb.toString()); 18

投稿2016/05/30 14:12

inabajunmr

総合スコア29

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

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

0

ヒントですが、

String err_message = err1 + err2 + err3 request.setAttribute("err_message",err_message);

と一括でまとめている個所を、個別に

String err_message = err1 + err2 + err3 request.setAttribute("err_message_1",err1); request.setAttribute("err_message_2",err2); request.setAttribute("err_message_3",err3);

として、JSPにもエラーメッセージを表示したい個所に、それぞれ値を表示するように実装すると個別表示できるでしょう。

ある程度慣れてきた後は、エラーメッセージ機能として統一できるかと思いますので、まずはかんたんな形で慣れるのが良いでしょうか。

投稿2016/05/30 12:48

A-pZ

総合スコア12011

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問