Java初心者のためおかしなところが多いと思いますがご容赦くださいませ。
Javaサーブレットのみを使って、以下の機能を実装したプログラムを書く課題に苦戦しております。
どうすれば課題通りに動くのか教えてください。
前提・実現したいこと
・テキストボックスと送信ボタンの表示
・送信すると入力された内容が下部に表示される
・送信されるたびに文字列は下に追加される
・未入力のまま送信ボタンが押下されるとアラートボックス(JavaScript)が表示され、送信処理が中止される
発生している問題・エラーメッセージ
・ページを開くたびに"null"という文字がテキストボックス下部に表示される
(doGetしてnullを受け取る前にアラートを出したい)
・そもそもアラートが出てくれない
(htmlをサーブレットに書くときはこのような書き方をしていたのですが、
JavaScriptを書くときは違いますか?)
・未入力で送信することができてしまう
該当のソースコード
Java
1 2import java.io.IOException; 3import java.io.PrintWriter; 4 5import javax.servlet.ServletException; 6import javax.servlet.annotation.WebServlet; 7import javax.servlet.http.HttpServlet; 8import javax.servlet.http.HttpServletRequest; 9import javax.servlet.http.HttpServletResponse; 10import javax.servlet.http.HttpSession; 11 12import java.util.ArrayList; 13 14@WebServlet(urlPatterns={"/book/TextTest"}) 15@SuppressWarnings("unchecked") 16public class TextTest extends HttpServlet 17{ 18 public void doGet(HttpServletRequest req, HttpServletResponse res) 19 throws ServletException, IOException 20 { 21 res.setContentType("text/html; chrset=UTF-8"); 22 PrintWriter out = res.getWriter(); 23 ArrayList<String> list; 24 25 // セッションから入力されたことのあるデータを取得 26 HttpSession session = req.getSession(); 27 list = (ArrayList<String>)session.getAttribute("word"); 28 29 // データが空の場合は新しくインスタンスを作成 30 if(list == null) 31 { 32 list = new ArrayList<String>(); 33 session.setAttribute("word", list); 34 } 35 36 // テキストボックスからデータを取得し、文字列をlistに追加 37 String data = req.getParameter("data"); 38 list.add(data); 39 40 // テキストが空の場合はアラートを表示 41 out.println("<html><head>"); 42 out.println("<script type=\"text/javascript\">"); 43 out.println("<!--"); 44 out.println("function check(){"); 45 out.println("if(document.getElementsByName(\"data\").value.length == 0){"); 46 out.println("alert(\"テキストボックスが空です。\")"); 47 out.println("}"); 48 out.println("//-->"); 49 out.println("</script></head><body>"); 50 51 // テキストボックスの表示 52 out.println("<form action=\"TextTest\" method=\"get\" name=\"box\">"); 53 out.println("<input type=\"text\" name=\"data\">"); 54 out.println("<input type=\"submit\" onClick=\"check()\">"); 55 out.println("</form><br><hr>"); 56 57 if(list.size() != 0) 58 { 59 // リストの中身をすべて出力 60 for(int i = 0; i < list.size(); i++) 61 { 62 out.println(list.get(i) + "<br>"); 63 } 64 } 65 out.println("</body></html>"); 66 } 67} 68
試したこと
JavaScriptで未入力を判定できる方法を調べました。
ネットでいろんな記事を見ながら書いたのでぐちゃぐちゃになっていると思います……
大変見にくく申し訳ありませんが、ヒントだけでもいただけると助かります。
よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/12 07:51
2020/05/12 08:09
2020/05/12 10:12