前提・実現したいこと
DBのデーターをeclipseに渡してtodoリストを作成しようとしています。
データーベースでは完了状況をString型のtrue(完了)、false(未済)で登録しています。
eclipseではDBで完了状況がtrueならば完了、falseならば未済であると表示させたいです。
また、プルダウンを用いて始めの表示画面は”未済のみ”のデータを表示し、プルダウンを用いて”すべて”を選択したら完了も未済のものも表示できるようにしたいです。
発生している問題・エラーメッセージ
HTTPステータス 500 - java.lang.NullPointerException
type 例外レポート
メッセージ java.lang.NullPointerException
説明 The server encountered an internal error that prevented it from fulfilling this request.
例外
org.apache.jasper.JasperException: java.lang.NullPointerException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:555)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
原因
java.lang.NullPointerException
study.bean.DataAccessBean.searchTodoInfo(DataAccessBean.java:122)
study.servlet.SearchServlet.doGet(SearchServlet.java:31)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:742)
org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:712)
org.apache.jsp.index_jsp._jspService(index_jsp.java:112)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
該当のソースコード
Java
public Collection<TodoInfo> searchTodoInfo(String param) throws SQLException{
Connection conn = null;
PreparedStatement ps= null;
ResultSet rs = null;
try{ String sql = ""; if(param.equals("all")){ sql= "SELECT id, title, done FROM todolist"; }else{ sql = "SELECT * FROM todolist WHERE done = ? "; } Collection<TodoInfo> todoList = new ArrayList<TodoInfo>(); conn = getDataSource().getConnection(); ps = conn.prepareStatement(sql); if(!param.equals("all")){ ps.setString(1, param); } rs = ps.executeQuery(); while(rs.next()){ TodoInfo todoinfo = new TodoInfo(); todoinfo.setId(rs.getString("id")); todoinfo.setTitle(rs.getString("title")); todoinfo.setDone(rs.getString("done")); todoList.add(todoinfo); } return todoList; }catch(NamingException e) { e.printStackTrace(); throw new SQLException(e); }finally{ if(rs != null){rs.close();} if(ps != null){ps.close();} if(conn != null){conn.close();} } }
}
、、、、、、、、、、、、、、、、、、、、、、
<%@ page pageEncoding="utf-8"
contentType="text/html; charset=utf-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
</tr> <c:forEach var="todoInfo" items="${todoInfoList}"> <tr> <td>${ todoInfo.id }</td> <td>${ todoInfo.title }</td> <td>${ todoInfo.done }</td> </tr>
</c:forEach>
</table>
<form action="${pageContext.request.contextPath}/search" method="post">
<select name="search">
<option value="false">未済のみ</option>
<option value="all">すべて</option>
</select>
<input type="submit" value="送信" />
</body> </html></form> <br> <a href="${pageContext.request.contextPath }/regist.jsp">新規登録ページへ</a>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。