2013-01-12 13 views
5

Używam Spring 3.1 i mam program obsługi, który powinien zwrócić wartość String. Oto jak wygląda mój obsługi:Spring MVC handler zwraca String z dodatkowymi cudzysłowami

@RequestMapping(value = TEST_HANDLER_PATH, method = RequestMethod.POST) 
public ResponseEntity<String> handleTest(HttpServletRequest request, 
    @RequestParam("parma1") String param) throws Exception { 
    String ret = ... 
    ... 
    HttpHeaders headers = new HttpHeaders(); 
    headers.add("Content-Type", "text/plain;charset=utf-8"); 
    return new ResponseEntity<String>(ret, headers, HttpStatus.CREATED); 
} 

Próbowałem też metody adnotacji z @ResponseBody z return ret; na końcu.

W obu przypadkach, po uruchomieniu usługi, otrzymuję dodatkowe kwotowanie wokół wartości ciągu (np. "This is a test"). Zgaduję, że jest to spowodowane konwersją wiadomości. Dlatego próbowałem zdefiniować nagłówek Content-Type, aby bezpośrednio trafić StringHttpMessageConverter, bez skutku.

Odpowiedz

-2

Okazało się, że był konwerter wiadomości JSON zarejestrowany w jednym z importów.

+1

Czy usunąłeś konwerter wiadomości JSON? Co jeśli nie chcesz usunąć konwertera wiadomości? –

+0

Można kierować określone konwertery za pomocą odpowiedniego typu MIME w nagłówkach żądania/odpowiedzi. Spojrzenie pod maską to mi pomogło. – cbaby

7

Miał ten sam problem.

Wystarczy, że zarejestrujesz org.springframework.http.converter.StringHttpMessageConverter, a także swój Jackson, tak że Strings są traktowane dosłownie i nie próbują być konwertowane na JSON (z dodatkowymi cytatami).

Wystarczy utworzyć instancję domyślnego konstruktora lub konstruktora za pomocą preferowanego zestawu znaków. Typy mediów powinny być ustawione dla Ciebie ze standardowymi wewnętrznymi wartościami domyślnymi. Jeśli konfigurujesz za pomocą kodu rozszerzającego WebMvcConfigurerAdapter, wystarczy dodać konwertery w metodzie configureMessageConverters(List<HttpMessageConverter<?>> converters).

+0

To zadziałało dla mnie. Również 'StringHttpMessageConverter' musi zostać dodany do' List > 'przed jakimkolwiek innym konwerterem. Porządek jest ważny, gdy konfigurujesz je jawnie –

0

W moim przypadku, miałem nad inżynierii=)

wprowadziła konwerter dla Fasoli toString Operacji tak:

class SerializableToString implements Converter<Serializable, String> 

ograniczając że (tylko do moich fasoli), rozwiązano problem X)

Uwaga: pomógł debugowanie z punktem przerwania @org.springframework.core.convert.support.GenericConversionService.getConverter.

Powiązane problemy