JavaEE 7をやってみよう。 Hello, world その2
その1の続き。
今度は、Servletからページを返す版として、
Servletから複数レコードのデータを送信し、
View側では受け取ったデータを表形式で表示するものを作ってみる。
作るもの。
○ HelloServlet.java
Servletでは、Viewページに表示するデータを作成し、
Requestを通じてViewにデータを引き渡す処理を作成する。
データの1レコードはHashMapで作成し、
それをListに詰めたものをViewに渡すものとする。
View側で表を作る際にJSFのカスタムタグを用いて実装を行うのだが、
その際、データを扱い易くするための、
ListDataModelというクラスを用いたデータも実験的に作っている。
ViewでのListとListDataModelの取り扱いは変わらないが、
ListDataModel*1はViewで使える機能が多い。
その3へ続く
package servlet; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.faces.model.DataModel; import javax.faces.model.ListDataModel; 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; @WebServlet(name="HelloServlet", urlPatterns="/Hello") public class HelloServlet extends HttpServlet { /** * シリアルバージョンID */ private static final long serialVersionUID = 1L; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { processRequest(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { processRequest(req, resp); } protected void processRequest( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { List<Map<String, String>> dataList = new ArrayList<Map<String, String>>(); Map<String, String> data = new HashMap<String, String>(); data.put("type", "戦艦"); data.put("name", "武蔵"); dataList.add(data); data = new HashMap<String, String>(); data.put("type", "戦艦"); data.put("name", "大和"); dataList.add(data); data = new HashMap<String, String>(); data.put("type", "戦艦"); data.put("name", "長門"); dataList.add(data); DataModel dataModel = new ListDataModel(dataList); request.setAttribute("dataList", dataList); request.setAttribute("dataModel", dataModel); RequestDispatcher rd = request.getRequestDispatcher("faces/jsf/hello.xhtml"); rd.forward(request, response); } }