Spring MVC: Jak zmodyfikować odpowiedź wysłaną z kontrolera sprężynowego?
Mam aplikację z Spring MVC 3.1.3 i interfejsem użytkownika opracowanym z Dojo 1.4. Aplikacja ma kilka kontrolerów, które obsługują przesyłane pliki binarnedojo.io.iframe.send
. Sterownik wysyła odpowiedź json, która musi być otoczona
<html><body><textarea>{my json response}</textarea></body></html>.
Zaimplementowałem niestandardowy filtr zdefiniowany w pliku web.xml:
<filter>
<filter-name>dojoIframeFilter</filter-name>
<filter-class>com.app.web.MultipartAjaxFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>dojoIframeFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Filtr doFilter ma takie zachowanie, pobrane zhttp://www.oracle.com/technetwork/java/filters-137243.html
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (request.getContentType() != null
&& request.getContentType().contains("multipart/form-data")) {
CharResponseWrapper wrapper = new CharResponseWrapper((HttpServletResponse) response);
chain.doFilter(request, wrapper);
log.info(wrapper.toString());
//Modify response here
}
else {
chain.doFilter(request, response);
}
}
Wyjście opakowania jest puste. Próbowałem również wielu innych kombinacji, takich jak umieszczenie niestandardowego filtru dla apletu dispatchera wiosennego, eliminując blok if wewnątrz doFilter, z których żaden nie działa. Próbowałem też napisać przechwytywacz Spring, który również się nie powiódł. Czy ktoś mógłby zaproponować inny pomysł?
Z góry dziękuję.
AKTUALIZACJA: Wyłączyłem zabezpieczenia sprężynowe i przetestowałem je za pomocą zwykłego sprężynowego mvc, ale problem pozostaje. Zmodyfikowałem tytuł i opis pytania.