2016-12-29 12 views
0

In der gleichen Anfrage an einem Teil, bekomme ich NullPointerException und bei anderen Teil des Codes ist es in Ordnung.Spring @Autowired Bean geben null

@Controller 
@RequestMapping(value="/event") 
public class EventController { 

@Autowired 
EventValidator eventValidator; 

@Autowired 
private EventService eventService; 

@InitBinder 
private void initBinder(WebDataBinder binder) { 
    System.out.println(eventValidator.toString()); <<—— NULL HERE 
    binder.setValidator(eventValidator); 
} 

@RequestMapping(value="/add_event",method = RequestMethod.POST,produces=MediaType.APPLICATION_JSON_VALUE) 
@ResponseBody 
public ResponseEntity<AjaxJSONResponse> postAddEventForm(@RequestPart("event") Event event, MultipartHttpServletRequest request,BindingResult result) throws MethodArgumentNotValidException, NoSuchMethodException 
{ 

    eventValidator.validate(event, result); <<——- OK HERE 

    //Check validation errors 
    if (result.hasErrors()) { 
     throw new MethodArgumentNotValidException(
       new MethodParameter(this.getClass().getDeclaredMethod("postAddEventForm", Event.class, MultipartHttpServletRequest.class, BindingResult.class), 0), 
       result); 
    } 

    Boolean inserted = eventService.addEvent(event); 
    String contextPath = request.getContextPath(); 
    String redirectURL = StringUtils.isEmpty(contextPath)?"/event":contextPath+"/event"; 
    return new ResponseEntity<AjaxJSONResponse>(new AjaxJSONResponse(inserted,"Event Added Successfully",redirectURL), HttpStatus.OK); 
} 

} 

In derselben Anfrage in initBinder() Funktion ist eventValidator NULL und in Funktion postAddEventForm()eventValidator wird, um die Instanz zu halten.

Bitte helfen Sie mit.

+0

versuchen, den Umfang der initBinder Methode für die öffentliche ändern. –

+0

Danke Chirdeep. Können Sie mir bitte eine kurze Information geben, warum wir die Öffentlichkeit brauchen? –

Antwort

0

Zugriffsspezifizierer von initBinder() Methode sollte sein public -

public void initBinder(WebDataBinder binder) { 
+0

Danke Vikas. Können Sie mir bitte eine kurze Information geben, warum wir die Öffentlichkeit brauchen? –