У меня есть следующая форма в моем JSP. Это возвращающий HTTP Status 500.HTTP Status 500 - NullPointerException
<form:form action="poll1" modelAttribute="poll1" method="post">
<table>
<tr>
<td><b><i>Poll #1</i></b></td>
</tr>
<tr>
<td>Would you like to have a 30-year reunion in 2016?<br>
</td>
</tr>
<tr>
<td><form:radiobutton path="vote" value="yes" />Yes <form:radiobutton
path="vote" value="no" />No</td>
</tr>
<tr>
<td><input name="submit" type="submit"
value="Vote Poll #1" align="left" /></td>
</tr>
</table>
</form:form>
Он сопоставляет к следующему методу в моем классе контроллера, и я пометил строку, где я получаю NullPointerException.
@RequestMapping(value = "/poll1", method = RequestMethod.POST)
public String processPoll1(@RequestParam String vote,
HttpServletResponse response, Model model) {
Map<String, Object> resultMap = poll1DAO.tallyVote(vote);
Cookie poll1 = new Cookie("poll1", "voted");
// Next line has the error
model.addAttribute("poll1Yes", resultMap.get("yes").toString());
model.addAttribute("poll1No", resultMap.get("no").toString());
poll1.setMaxAge(maxSeconds);
response.addCookie(poll1);
return "redirect:/polls";
}
Следующий код из моего класса DAO, и я считаю, что возвращается нуль, но я не могу понять, почему.
public Map<String, Object> tallyVote(String vote) {
int votes;
try {
votes = this.getJdbcTemplate().queryForInt(
"select " + vote + " from poll1 where id = 1") + 1;
this.getJdbcTemplate().update(
"update poll1 set " + vote + " = " + votes
+ " where id = 1");
Map<String, Object> returnMap = getVotes();
return returnMap;
} catch (DataAccessException e) {
System.out.println(e.toString());
}
return null;
}
Вот мой стек исключения.
exception
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException
org.springframework.web.servlet.FrameworkServlet.finalizeProcessing(FrameworkServlet.java:947)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:893)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:792)
javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause
java.lang.NullPointerException
com.controller.PollController.processPoll1(PollController.java:65)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:483)
org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:647)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:603)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:950)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:859)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:883)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:792)
javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Загрузите стек исключений. – BonanzaOne
Ваш код действительно опасен: если он страдает от SQL-инъекции: голосование по строкам может быть любой строкой (с точки зрения хакера) и сразу же объединяется в ваш запрос. Таким образом, теоретически оператор удаления может быть отправлен в вашу базу данных или случайные вставки и т. Д. –