いくつかのラジオ ボタンを含む Struts2 JSP に次のフォームがあります。このページには正しく機能するフォームが他に 2 つありますが、これは正しくありません。選択した値が何らかの形で渡されていないと判断しました。それが NullPointerException を取得している理由ですが、なぜそれが起こっているのかわかりません。誰でも私を助けることができますか?これが私のJSPフォームです。
<s:form action="ProcessPoll3">
<table>
<tr>
<td><b><i>Poll #3</i></b></td>
<td>How many kids do you have?</td>
<td><s:radio name="poll3"
list="#{'1':'0.', '2':'1.', '3':'2.',
'4':'3.', '5':'More than 3.'}" />
<s:submit value="Vote Poll #3" align="left" /></td>
</tr>
</table>
</s:form>
私の DAO クラスは、次の行で呼び出されます (そして、確実に呼び出されています): String poll3; プライベート HttpServletResponse 応答。
public String getPoll3() {
return poll3;
}
public void setPoll2(String poll3) {
this.poll3 = poll3;
}
public String execute() {
Poll3DAO poll3DAO = new Poll3DAO();
if (poll3DAO.tallyVote(poll3).equals("success")) {
// Processing goes on here, not relevant to this problem
}
これは、DAO クラスのメソッドです。渡されるはずのパラメーターが null だったため、ブレークダウン ポイントがマークされています。
public String tallyVote(String vote) {
String successfulWrite;
request = ServletActionContext.getRequest();
SessionFactory sessionFactory = (SessionFactory) request.getSession()
.getServletContext().getAttribute("sessionFactory");
Session session = sessionFactory.openSession();
try {
// Get previous results
Transaction tx1 = session.beginTransaction();
Query myQuery = session.createQuery("from Poll3");
tx1.commit();
// Update results
Iterator<Poll3> iterate = myQuery.iterate();
Poll3 poll3 = iterate.next();
// NullPointerException occurs on next line
if (vote.equals("1")) {
poll3.setZero(poll3.getZero() + 1);
} else if (vote.equals("2")) {
poll3.setOne(poll3.getOne() + 1);
} else if (vote.equals("3")) {
poll3.setTwo(poll3.getTwo() + 1);
} else if (vote.equals("4")) {
poll3.setThree(poll3.getThree() + 1);
} else if (vote.equals("5")) {
poll3.setMoreThanThree(poll3.getMoreThanThree() + 1);
}
// Write new results back to database;
Transaction tx2 = session.beginTransaction();
session.update(poll3);
tx2.commit();
successfulWrite = "success";
} catch (Exception e) {
System.out.println(e.toString());
successfulWrite = "failure";
}
return successfulWrite;
}