状況
1.top.jsp
2.TestServlet
3.test.jsp ←イマココ
4.TestResultServlet
5.testResult.jsp
6.top.jsp
配列を用意してsetAttributeでServletで渡ってるはずなのに、リストデータを取得した以下の文の中身がJSPに表示されない。
//test.jsp
//リストデータをリクエストから取得
List<QuestionsBean> qlist = (List<QuestionsBean>)request.getAttribute("qlist");
//questionのデータが空でない場合
if(qlist != null){
//qestionのデータの数分、繰り返し処理
for(int i=0;i<qlist.size();i++){
%>
<div class="inputQuestion">
<p>
<!-- 問題番号 -->
<input readonly type="text" name="questionId" value="<%= qlist.get(i).getId() %>">
</p>
<p>
<!-- 問題 -->
<textarea readonly name="question"><%= qlist.get(i).getQuestion() %></textarea>
</p>
</div>
<!-- 回答 -->
<div class="input-answer">
<p> 回答:
<!-- 答え -->
<input type="text" name="answer" id="answer">
</p>
</div>
<%
}
}
%
原因
①サーブレットの遷移先が間違っていた
//TestServlet.java
RequestDispatcher rd = request.getRequestDispatcher("list.jsp");
rd.forward(request, response);
コピペマンのあるある。
そのせいでサーブレットからデータが渡ってきてなかった
②postに渡したいのにaタグで書いてた
//top.jsp
誤 <a href="TestServlet">テストをする</a>
//top.jsp
正 <form action="TestServlet" method="post">
<input type="submit" value="テストをする">
</form>
まとめ
遷移先のミスは想定外でした。。
2回目のミスなので備忘録