###前提・実現したいこと
JSPがsubmit送信したデータをservletで取得。
取得するデータは参照型クラスです。
###発生している問題・エラーメッセージ
ソースコード
JSP
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="javax.servlet.ServletContext"%> <%@ page import="category.CategoryList"%> <%@ page import="category.Category"%> <!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>Insert title here</title> </head> <body> <div align="left"> <h1>ブログ作成</h1> </div> <hr> <div align="center"> <form action="Master" method="post"> <div align="left"> <input type="text" placeholder="タイトル" name="title" size="80"> <p /> <% ServletContext context = this.getServletContext(); CategoryList categoryList = (CategoryList) context.getAttribute("CategoryList"); %> <div align="right"> カテゴリー: <select name="category"> <% for (Category category : categoryList.getList()) { %> <option value=<%=category%>><%=category.getCategoryName()%></option> <% } %> </select> </div> <textarea name="body" cols="60" rows="20"></textarea> </div> <div align="right"> <button type="submit" name="Action" value="create">作成</button> </div> </form> </div> </body> </html>
JavaServlet
package controller; import java.io.IOException; import javax.servlet.RequestDispatcher; 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.http.HttpSession; import model.User; /** * Servlet implementation class MasterController */ @WebServlet("/Master") public class MasterController extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 直接起動防止 RequestDispatcher rd = request.getRequestDispatcher("top.jsp"); rd.forward(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // エンコード request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); // 処理行動種別 String action = null; // セッション取得 HttpSession session = request.getSession(); // 事前ログインユーザ定義 if (session.getAttribute("User") == null) { User user = new User("admin", "suzukitarou", "suzukin"); session.setAttribute("User", user); } action = request.getParameter("Action"); // form送信 String url = null; if (action == null) { action = "null"; } // 行動別処理 switch (action) { /*執筆系*/ case "write": if (session.getAttribute("User") != null) { url = "write.jsp"; } else { url = "login.jsp"; } break; // case "login": // ログイン処理 // url = "Login"; // ログインコントローラ // String userId = request.getParameter("userid"); // ID取得 // String password = request.getParameter("password"); // パスワード取得 // request.setAttribute("USERID", userId); // ID送信 // request.setAttribute("PASSWORD", password); // パスワード送信 // request.setAttribute("ACTION","login"); // 行動送信 // break; // case "agree": // ログイン完了処理 // url = "successlogin.jsp"; // break; // case "incongruous": // ログイン失敗処理 // request.setAttribute("REASON", "incongruous"); // // url = "failurelogin.jsp"; // break; // case "prev": // 戻る // url = "top.jsp"; // break; // case "goLogin": // ログイン画面に移動 // url = "login.jsp"; // break; case "create": // タイトル取得 String title = request.getParameter("title"); // 本文取得 String body = request.getParameter("body"); // カテゴリー取得 // Category category = request.getParameterValues("Category"); //Category category = (Category)request.getAttribute("category"); // データの送信準備 request.setAttribute("Title", title); request.setAttribute("Body", body); request.setAttribute("Category", category); url = "valuetest.jsp"; break; default: // 予想とした処理と違うものが入ってきた場合 url = "top.jsp"; break; } // 画面遷移 RequestDispatcher rd = request.getRequestDispatcher(url); rd.forward(request, response); } }
###試したこと
getParameter()では文字列型しか取れず、
getAttribute()ではsubmit送信では送れなかった。
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
参照型クラスのデータを取得するにはどうすればよいでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。