###前提・実現したいこと
自主勉強の一環で、SAStrutsによるWebアプリ開発をしています。
下記のようなことをやろうとしています。
①ActionFormにListを持たせて、その要素をJSPで一覧として表示。
②明細の各項目の値を変更してsubmit、ActionFormのListから値を取り出して処理。
###発生している問題・エラーメッセージ
①まではできたのですが、
②において、ActionFormのListにアクセスしようとしたとき、NullPointerExceptionが発生します。
どのようにしたら、Listに明細をセットできるのでしょうか……。
###該当のソースコード
■InputForm.java
Java
1public class InputForm { 2 3 //明細部 4 private List<Detail> detailList; 5 6 public List<Detail> getDetailList() { 7 return detailList; 8 } 9 public void setDetailList(List<Detail> detailList) { 10 this.detailList = detailList; 11 } 12 public Detail getDetail(int index) { 13 return getDetailList().get(index); 14 } 15 public void setDetail(Detail detail) { 16 detailList.add(detail); 17 } 18 19 //明細行のDTO 20 public class Detail { 21 private int index; 22 private String str; 23 24 public int getIndex() { 25 return index; 26 } 27 public void setIndex(int index) { 28 this.index = index; 29 } 30 public String getStr() { 31 return str; 32 } 33 public void setStr(String str) { 34 this.str = str; 35 } 36 } 37 38}
■InputAction.java
Java
1public class InputAction { 2 3 @Resource 4 @ActionForm 5 protected InputForm inputForm; 6 7 @Execute(validator=false) 8 public String input() { 9 List<Detail> detailList = new ArrayList<>(); 10 for (int i = 0; i < 7; i++) { 11 Detail detail = inputForm.new Detail(); 12 detail.setIndex(i); 13 detail.setStr("STR"); 14 detailList.add(detail); 15 } 16 inputForm.setDetailList(detailList); 17 18 return "input.jsp"; 19 } 20 21 @Execute(validator=false) 22 public String exec() { 23 //↓ここでNullPointerException 24 inputForm.getDetailList().get(0); 25 26 return "input.jsp"; 27 } 28}
■input.jsp
<%@page pageEncoding="UTF-8"%> <html> <body> <s:form method="get"> <s:submit property="exec" value="submit"/> <table> <tr> <td>No.</td> <td>str</td> </tr> <c:forEach var="detail" items="${inputForm.detailList}"> <tr> <td> <html:text name="detail" property="index" indexed="true"/> </td> <td> <html:text name="detail" property="str" indexed="true"/> </td> </tr> </c:forEach> </table> </s:form> </body> </html>
###参考にしたもの
下記サイトを一部参考にしたのですが、理解できなかったところもあり、反映し切れていません。どうぞご教示おねがいいたします。
http://www.civic-apps.com/2006/06/09/struts-using-list/
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=32607&forum=12
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。