<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    stone2083

    Struts2.1.6 StrutsPrepareAndExecuteFilter bug

    在用strust2.1.6做小項目,結果居然發(fā)現(xiàn)在post數(shù)據(jù)的時候,居然有亂碼。
    自認為對編碼也算了解,立馬check應用的content type,struts2配置的struts.locale,struts.i18n.encoding,沒錯,都是統(tǒng)一使用了UTF-8。
    那是為什么呢?沒辦法,只能debug應用,結果發(fā)現(xiàn):
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {

            HttpServletRequest request 
    = (HttpServletRequest) req;
            HttpServletResponse response 
    = (HttpServletResponse) res;

            
    try {
                prepare.createActionContext(request, response);
                prepare.assignDispatcherToThread();
                prepare.setEncodingAndLocale(request, response);
                request 
    = prepare.wrapRequest(request);
                ActionMapping mapping 
    = prepare.findActionMapping(request, response);
                
    if (mapping == null) {
                    
    boolean handled = execute.executeStaticResourceRequest(request, response);
                    
    if (!handled) {
                        chain.doFilter(request, response);
                    }
                } 
    else {
                    execute.executeAction(request, response, mapping);
                }
            } 
    finally {
                prepare.cleanupRequest(request);
            }
        }
    看到沒?
    1) prepare.createActionContext(request, response);
    2)
    prepare.setEncodingAndLocale(request, response);
    setEncodingAndLocale居然在createActionContext之后,在沒有設置正確的encoding之前,解析request中的parameters,能成嗎?

    無奈之下,只能暫時用
    CharacterEncodingFilter這個filter設置request的character,猥瑣地臨時解決問題。

    今天打算向Struts提交bug的時候,發(fā)現(xiàn)該bug在2.1.7版本中被修復,詳見:https://issues.apache.org/struts/browse/WW-3075%3Bjsessionid=3EAC5B44A949CA77B4471AA0D45754E9?page=com.atlassian.jira.plugin.ext.subversion%3Asubversion-commits-tabpanel

    哎,在使用2.1.7之前,先用CharacterEncodingFilter吧 :)


    posted on 2009-06-08 20:37 stone2083 閱讀(3997) 評論(3)  編輯  收藏 所屬分類: java

    Feedback

    # re: Struts2.1.6 StrutsPrepareAndExecuteFilter bug 2009-06-10 09:16 leton2008

    確實是如此。
    之前我也是碰到了這個問題。
    我切換回了org.apache.struts2.dispatcher.FilterDispatcher。
    等待官方修復的發(fā)布。  回復  更多評論   

    # re: Struts2.1.6 StrutsPrepareAndExecuteFilter bug[未登錄] 2009-06-11 23:04 阿風

    我用spring的CharacterEncodingFilter  回復  更多評論   

    # re: Struts2.1.6 StrutsPrepareAndExecuteFilter bug 2009-06-13 11:02 stone2083

    個人不希望僅僅因為猥瑣解決這個bug,而引入對spring-web的依賴。
    手寫一個CharacterEncodingFilter也是比較方便的事情。

    當然,切會org.apache.struts2.dispatcher.FilterDispatcher,也是一個可選方案。
    當時自己不選擇FilterDispatcher的原因是:
    在應用測試的時候,順帶測試struts2 StrutsPrepareAndExecuteFilter(官方推薦)方案.免得等2.1.7發(fā)布后,在換回StrutsPrepareAndExecuteFilter時,又發(fā)現(xiàn)其他問題。
    相對來說,刪除一個Filter的風險更小一些 :)
      回復  更多評論   

    主站蜘蛛池模板: 99久久国产免费中文无字幕| 特级无码毛片免费视频尤物 | 成人黄软件网18免费下载成人黄18免费视频 | 亚洲国产成人久久综合| 女人张开腿等男人桶免费视频| 亚洲jjzzjjzz在线播放| 亚洲精品亚洲人成人网| 丰满人妻一区二区三区免费视频| 亚洲精品色婷婷在线影院| aa午夜免费剧场| 亚洲欧洲日产国码无码网站 | 亚洲欧美日本韩国| 日本免费人成黄页网观看视频| 日本亚洲欧美色视频在线播放| 日本不卡在线观看免费v| 特级毛片免费播放| 亚洲精品网站在线观看不卡无广告| 成人免费网站视频www| 国产亚洲精品成人AA片新蒲金| 中文字幕av无码不卡免费| 亚洲av丰满熟妇在线播放| 2020因为爱你带字幕免费观看全集| 亚洲码一区二区三区| 一级做a爰片久久免费| 国产AV无码专区亚洲精品| 在线a免费观看最新网站| 亚洲精品无码日韩国产不卡av| 亚洲AⅤ视频一区二区三区| 亚洲伊人久久大香线蕉结合| 女人张开腿等男人桶免费视频| 一级黄色片免费观看| 亚洲人成网址在线观看| 日本高清免费观看| 亚洲午夜福利717| aa级一级天堂片免费观看| 十八禁的黄污污免费网站| 国产成A人亚洲精V品无码| 国产成人免费高清激情视频| 免费播放国产性色生活片| 亚洲午夜精品久久久久久人妖| 高清国语自产拍免费视频国产|