Spring JSON портит ответ от JacksonMessageConverter - PullRequest
0 голосов
/ 15 марта 2012

У меня в приложении Spring есть JacksonMessageConverter для возврата ответа JSON.Но прежде чем вернуть JSON, я хотел бы испортить JSON, как указано в Ajax Security - Предотвращение перехвата JSON .Возможно ли это сделать при использовании конвертера сообщений?

Обновление

Ищу решение, подобное этому пружинному префиксу json с responsebody , ноУ меня уже есть настройка, настроенная правильно.PFB

<bean id="jacksonMessageConverter"
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
    <property name="prefixJson" value="true" />
    <property name="supportedMediaTypes" value = "text/plain;charset=UTF-8" />
</bean>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="messageConverters">
        <list>
            <ref bean="jacksonMessageConverter"/>
        </list>
    </property>
</bean>

Но все же возвращаемый JSON не имеет префикса "&& {}".

ПРИМЕЧАНИЕ. Я хотел бы использовать другой префикс для JSON, как описано в Ajax Security - предотвращение захвата JSON , но даже поддержка по умолчанию, предоставляемая в Джексоне, похоже, не работает.Есть идеи?

Ответы [ 2 ]

1 голос
/ 16 марта 2012

Попробуйте отладить MappingJacksonHttpMessageConverter, чтобы увидеть, если prefixJson равно true . Если нет, то ваш боб не вводится пропеллом. Если да, посмотрите в writeInternal() метод класса MappingJacksonHttpMessageConverter. ИТ четко делает то, что вам нужно:

try {
        if (this.prefixJson) {
            jsonGenerator.writeRaw("{} && ");
        }
        this.objectMapper.writeValue(jsonGenerator, o);
    }

Если вы хотите добавить пользовательский префикс, вам нужно переопределить writeInternal() и сделать это там.

1 голос
/ 16 марта 2012

Более простым подходом было бы расширить MappingJacksonHttpMessageConverter и переопределить метод writeInternal для выполнения таких вещей, как пользовательский префикс и т. Д.

...