Как установить длину содержимого после разрешения представления с помощью Spring MVC? - PullRequest
0 голосов
/ 19 сентября 2011

Мы используем Spring MVC (3.0.5) для API, который мы создаем.Однако мы обнаружили, что приложение не всегда возвращает длину содержимого в заголовке ответа.Почему я еще не выяснил.Мы не можем вручную установить длину содержимого в контроллере ( request.setContentLength (x) ), потому что мы используем только подмножество данных, которые мы получаем с контроллером в нашем представлении Freemarker.Таким образом, в основном нам нужно вычислить и установить длину содержимого после представление было разрешено / скомпилировано и непосредственно перед оно фактически отправлено клиенту.

Есть ли какие-нибудь распространенные («хорошие практики») способы сделать это?Или даже "некрасивые" способы?

1 Ответ

2 голосов
/ 20 сентября 2011

Перехватывайте ваши запросы с помощью интерфейса HandlerInterceptor. Метод afterCompletion запускается после разрешения представления, поэтому вы должны иметь возможность установить значение там, поскольку сигнатура этого метода проходит HttpServletResponse. Настройте таким образом:

<!-- Configures Handler Interceptors -->    
<mvc:interceptors>
    <bean class="com.myapp.web.interceptor.MyInterceptor" />
</mvc:interceptors>

Вот базовый код:

@Component
public class MyInterceptor implements HandlerInterceptor {
}
...