2014-11-03 8 views
9

Recentemente ho migrato il nostro progetto dalla primavera 3 alla primavera 4.1.1. Eseguo inoltre la migrazione di jackson dalla versione 1 alla versione 2.3.0.Migrazione della primavera dalla 3.2 alla 4.1.1: problemi con la serializzazione JSON

Ora, ho incontrato dei problemi quando si utilizzano i controller con risposta nulla

@RequestMapping(value="toto", method="POST") 
public @ResponseBody void myController() { 
//content 
} 

In fase di esecuzione, quando si chiama io ottenere un'eccezione di questa forma:

Failed to evaluate serialization for type [void]: java.lang.IllegalStateException: Failed to instantiate standard serializer (of type com.fasterxml.jackson.databind.ser.std.NullSerializer): Class com.fasterxml.jackson.databind.ser.BasicSerializerFactory can not access a member of class com.fasterxml.jackson.databind.ser.std.NullSerializer with modifiers "private" 

Mi chiedo se qualcuno ha riscontrato lo stesso tipo di problema o avere un'idea di ciò che è sbagliato.

Grazie in anticipo.

risposta

14

Se si desidera utilizzare un tipo di ritorno void è necessario annotare il metodo con @ResponseStatus(value = HttpStatus.OK):

@RequestMapping(value = "/usage") 
@ResponseStatus(value = HttpStatus.OK) 
public void doSomething(HttpServletRequest request, ... 

Per i dettagli si veda What to return if Spring MVC controller method doesn't return value?

+0

bello! questo è quello che mi mancava. –

1

Il metodo non restituisce nulla, quando Spring è in attesa di un valore di ritorno per serializzare utilizzando HttpMessageConverters. Si dovrebbe piuttosto avere qualcosa di simile:

@RequestMapping(value="toto", method="POST") 
@ResponseBody 
public FooBar myController() { 
    // 
    return fooBar; 
} 
Problemi correlati