0

Spring MVC 3.1.3 を使用したアプリと、Dojo 1.4 で開発された UI があります。アプリケーションには、 経由でアップロードされたバイナリ ファイルを処理するコントローラがほとんどありませんdojo.io.iframe.send。コントローラーは、で囲む必要があるjson応答を送信します

<html><body><textarea>{my json response}</textarea></body></html>.

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>

フィルタの doFilter には、http: //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);
    }
}

ラッパーの出力は空です。また、Spring のディスパッチャー サーブレット用のカスタム フィルターを配置したり、doFilter 内の if ブロックを廃止したり、どれも機能しないなど、他の多くの組み合わせも試しました。また、Spring インターセプターを作成しようとしましたが、これも失敗しました。誰か他のアイデアを提案してもらえますか?

前もって感謝します。

更新:スプリング セキュリティを無効にし、プレーン スプリング mvc でテストしましたが、問題は残ります。タイトルと質問の説明を修正しました。

4

1 に答える 1

0

友よ、ServletResponse を正常に変更するには、さらに ServletOutputStream をサブクラス化する必要があります。詳細なソリューションについては、http://docstore.mik.ua/orelly/xml/jxslt/ch08_04.htmを参照してください。

于 2013-01-12T13:23:34.597 に答える