<目次>
(1) JSP/Servletでポップアップを表示する方法について
(1-1) 実現したい事
(1-2) 構文
(1-3) サンプルプログラム
(1) JSP/Servletでポップアップを表示する方法について
(1-1) 実現したい事
例えば、次の図のようなJSP画面(初期表示)⇒Sevlet(入力チェック処理)⇒JSP画面(エラー表示)という画面遷移があった際に、遷移後のJSP画面でポップアップ(エラー表示)を出力しています。

(1-2) 構文


- request.setAttribute("error_msg", "「氏名」は空欄にできません。");
- RequestDispatcher rd = getServletContext().getRequestDispatcher(“遷移先画面名.jsp”);
- rd.forward(request, response);
- <%
- if(request.getAttribute("error_msg")!=null){
- String error_msg = (String)request.getAttribute("error_msg");
- %>
最後にJSP側でJavaScriptを組み込み、エラーメッセージをポップアップ(alert)に乗せて出力しています。「<%=error_msg%>」でメッセージの内容を取得しています。
- <script type="text/javascript">
- var msg = "<%=error_msg%>";
- alert(msg);
- </script>
(1-3) サンプルプログラム
●JSP①
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>ITxxxx_エラー時ポップアップ出力</title>
- </head>
- <form method="POST" action="ITxxxx_ShowPopUpServlet" name="validataion">
- 名前を入力して「送信」を押して下さい。<br /><br />
- <body>
- ①氏名: <input type="text" name="g_name" id="name" />
- <br />
- <input type="submit" value="送信" /></td>
- </body>
- <%
- if(request.getAttribute("error_msg")!=null){
- String error_msg = (String)request.getAttribute("error_msg");
- %>
- <script type="text/javascript">
- var msg = "<%=error_msg%>";
- alert(msg);
- </script>
- <%}%>
- </form>
- </html>
●Servlet
- package studyc;
- import java.io.IOException;
- import java.util.ArrayList;
- import javax.servlet.ServletException;
- import javax.servlet.annotation.WebServlet;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.RequestDispatcher;
- @WebServlet("/ITxxxx_ShowPopUpServlet")
- public class ITxxxx_ShowPopUpServlet extends HttpServlet {
- private static final long serialVersionUID = 1L;
- public ITxxxx_ShowPopUpServlet() {
- super();
- }
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
- {
- //# GET時の必須入力チェックの実行
- MandatoryCheck(request,response);
- }
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
- {
- doGet(request, response);
- }
- //# エラーメッセージを格納するためのArrayList
- public ArrayList<String> errs = new ArrayList<String>();
- //# エラーメッセージを格納したArrayList「errs」のメッセージをHTML形式に整形(タグを付与)したり、文字色を赤くする処理をしています。
- //# StringBuffer型の変数に格納していき、その結果を戻り値にしています。
- public String getErrorList() {
- StringBuffer buf = new StringBuffer();
- if(errs.size()>0) {
- for(int i=0; i<errs.size(); i++) {
- buf.append("・"+errs.get(i));
- }
- }
- return buf.toString();
- }
- //# 必須入力チェックを行うメソッドです。
- public void requiredCheck(String value, String name) {
- //もし「引数(value)がnull」OR「引数(value)の空白削除値が空」なら
- if(value==null || value.trim().isEmpty()) {
- //入力値がブランクであると見なし、入力を求めるメッセージを出力
- errs.add(name+" は必須項目です。値を入力してください。");
- }
- }
- //# 必須入力チェックの全体処理
- //# 入力値の取得→必須チェック→エラーメッセージのセット→画面遷移までの一連の処理を行うメソッド
- public void MandatoryCheck(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- errs = new ArrayList<String>();
- String v_name = request.getParameter("g_name");
- //# もし必須入力のいずれかが「null」OR「ブランク」の場合
- if(v_name==null || v_name=="") {
- //# 必須入力項目のチェックを実行
- //# (requiredCheckを実行して空なら「[項目名] is a mandatory~」のエラーメッセージがArrayListに格納される)
- requiredCheck(request.getParameter("g_name"),"[①氏名]");
- //# エラーメッセージをリクエストの属性としてセット
- request.setAttribute("error_msg", getErrorList());
- //# エラーメッセージを表示するため、再び項目の入力画面に戻る
- String nextpage="/ITxxxx_ShowPopUpMsg.jsp";
- RequestDispatcher rd = getServletContext().getRequestDispatcher(nextpage);
- rd.forward(request, response);
- }
- //# 必須入力項目がnullかブランクでない場合、各項目の値をリクエストの属性(末尾に2を付けた項目名)としてセットしていく
- else {
- //# バリデーションの結果問題なければ、次画面に遷移する
- String nextpage="/ITxxxx_ShowPopUpMsgResult.jsp";
- RequestDispatcher rd = getServletContext().getRequestDispatcher(nextpage);
- rd.forward(request, response);
- }
- }
- }
●JSP②(※今回は使用せず)
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>ITxxxx_エラー時ポップアップ出力</title>
- </head>
- <body>
- <br />
- 必須チェック成功です。
- <br />
- こんにちは "<%=request.getParameter("g_name")%>"" さん!
- <br />
- <a href="ITxxxx_ShowPopUpMsg.jsp">→前ページに戻る</a>
- </body>
- </html>
(図133)