2016-10-29 2 views
0

Я пишу контроллер для своего веб-сервиса и, добавляя новые методы, старый начал бросать nullPointerException. Я просто ищу ответ или подсказку, которая могла бы указать, что может быть не так с этим, просто опубликуйте код и jsp и объясните, что происходит.NullPointerException на объекте ModelAttribute

методы контроллера:

@RequestMapping(value={"/items"}, method = RequestMethod.GET) 
public String listItems(ModelMap model) { 
    model.addAttribute("item", new GenericItem()); 
    model.addAttribute("itemList", this.adminService.getAllGenericItems()); 
    model.addAttribute("itemTypes", ItemType.values()); 
    return "/admin/items"; 
} 


@RequestMapping(value={"/items", "/edit-item-{id}"}, method = RequestMethod.POST) 
public String addItem(@ModelAttribute("item") GenericItem item) { 
    if(item.getId() == 0) { // THIS LINE CAUSE NULL POINTER EXCEPTION 
     this.adminService.saveGenericItem(item); 
    } 
    else { 
     this.adminService.updateGenericItem(item); 
    } 
    return "redirect:/admin/items"; 
} 

Jsp форма для заполнения "GenericItem" объект:

<table> 
<c:if test="${!empty item.name}"> 
<form:hidden path="id" /> 
</c:if> 
<tr> 
    <td colspan = "2">Item details 
    </td> 
</tr> 
<tr> 
    <td>Name: 
    </td> 
    <td> 
     <form:input path="name" /> 
    </td> 
</tr> 
<tr> 
    <td>Weight: 
    </td> 
    <td> 
     <form:input path="weight" /> 
    </td> 
</tr> 
<tr> 
    <td>Value: 
    </td> 
    <td> 
     <form:input path="value" /> 
    </td> 
</tr> 
<tr> 
    <td>Item type: 
    </td> 
    <td> 
     <form:select path="itemType"> 
      <form:option value="">---</form:option> 
      <form:options items="${itemTypes}" /> 
     </form:select> 
    </td> 
</tr> 
<tr> 
    <td>Detail: 
    </td> 
    <td> 
     <form:input path="detail" /> 
    </td> 
</tr> 
<tr> 
    <td>Graphic: 
    </td> 
    <td> 
     <form:input path="graphic" /> 
    </td> 
</tr> 
<tr> 
    <td colspan="2"> 
     <c:if test="${!empty item.name}"> 
      <input type="submit" 
       value="Edit" /> 
     </c:if> 
     <c:if test="${empty item.name}"> 
      <input type="submit" 
       value="Add" /> 
     </c:if> 
    </td> 
</tr> 


POJO из GenericItem:

public class GenericItem { 

@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
@Column(name = "generic_item_id") 
private Long id; 

@Column(name = "name") 
private String name; 

@Column(name = "weight") 
private int weight; 

@Column(name = "value") 
private int value; 

@Column(name = "item_type") 
@Enumerated(EnumType.STRING) 
private ItemType itemType; 

@Column(name = "detail") 
private String detail; 

@Column(name = "graphic") 
private String graphic; 

//getter setters 

}

Так что я только начал получать nullPointerExceptions в методе контроллера, где я хочу прочитать элемент ItemAttribute значения POSTED. Странная вещь, над которой она работала раньше, и теперь остановилась, и я понятия не имею, с чего начать поиски моей ошибки.

Если бы любая помощь это ошибка переполнения

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982) 
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:648) 
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:316) 
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:126) 
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:90) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 
org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 
org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:122) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 
org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 
org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:168) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 
org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:48) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 
org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:205) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 
org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:120) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 
org.springframework.security.web.csrf.CsrfFilter.doFilterInternal(CsrfFilter.java:120) 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 
org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64) 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 
org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:91) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 
org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:53) 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 
org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:213) 
org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:176) 
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) 
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262) 

первопричиной

java.lang.NullPointerException 
eu.kerdev.webproject.controller.ApplicationController.addItem(ApplicationController.java:52) 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
java.lang.reflect.Method.invoke(Method.java:606) 
org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) 
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) 
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:114) 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) 
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963) 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897) 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) 
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:648) 
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:316) 
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:126) 
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:90) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 
org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 
org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:122) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 
org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 
org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:168) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 
org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:48) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 
org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:205) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 
org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:120) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 
org.springframework.security.web.csrf.CsrfFilter.doFilterInternal(CsrfFilter.java:120) 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 
org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64) 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 
org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:91) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 
org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:53) 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 
org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:213) 
org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:176) 
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) 
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262) 

ответ

1

идентификатор вашего элемента равен нулю, следовательно:

item.getId() == 0

выбросит Исключение нулевого указателя. Использование:

Long.valueOf(0L).equals(item.getId())

или установить какое-то значение для вашего Id.

+0

спасибо большое ... Полностью забыл, что я переработал все мои идентификаторы Long от int. – Kerath100

Смежные вопросы