2016-10-29 6 views
0

Ich schreibe Controller für meinen Webservice und beim Hinzufügen neuer Methoden die alte begann NullPointerException werfen. Ich suche nur eine Antwort oder einen Tipp, der darauf hinweisen könnte, was daran falsch sein könnte, krank, poste nur den Code und jsp und erkläre, was vor sich geht.NullPointerException auf ModelAttribute Objekt

Controller-Methoden:

@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 form "GenericItem" Objekt zum Füllen:

<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> 


Die POJO von 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 

}

Also ich habe gerade angefangen Nullpointerexceptions auf dem Controller-Methode bekommen, wo ich den Wertansatz ModelAttribute Artikel lesen möchten. Seltsames Ding, das es vorher gearbeitet hat und jetzt gestoppt hat und ich habe keine Idee, wo ich anfangen soll, nach meinem Fehler zu suchen.

Wenn dies jede Hilfe wäre, ist dies voll Fehler

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) 

Ursache

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) 

Antwort

1

Ihr Artikel von id gleich null ist, also:

item.getId() == 0

wird werfen NullPointerException. Verwendung:

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

oder einen Wert auf Ihre Id gesetzt.

+0

vielen Dank ... Ich habe vergessen, dass ich alle meine IDs zu Long von Int. – Kerath100

Verwandte Themen