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

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

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

    Tin's Blog

    You are coming a long way, baby~Thinking, feeling, memory...

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      128 隨筆 :: 0 文章 :: 221 評論 :: 0 Trackbacks
    使用jakarta commons-upload。
    升級到2.2.2后發(fā)現(xiàn)上傳中文會亂碼。
    經(jīng)過跟蹤發(fā)現(xiàn)在com.opensymphony.webwork.dispatcher.DispatcherUtils的prepare(HttpServletRequest request, HttpServletResponse response)方法。
    2.2.1->2.2.2時這個方法發(fā)生了非常的的變化。
    2.2.1時:?
    public?void?prepare(HttpServletRequest?request,?HttpServletResponse?response)?{?
    ????????
    if?(encoding?!=?null)?{?
    ????????????
    try?{?
    ????????????????request.setCharacterEncoding(encoding);?
    ????????????}?
    catch?(Exception?e)?{?
    ????????????????LOG.error(
    "Error?setting?character?encoding?to?'"?+?encoding?+?"'?-?ignoring.",?e);?
    ????????????}?
    ????????}?

    ????????
    if?(locale?!=?null)?{?
    ????????????response.setLocale(locale);?
    ????????}?

    ????????
    if?(paramsWorkaroundEnabled)?{?
    ????????????request.getParameter(
    "foo");?//?simply?read?any?parameter?(existing?or?not)?to?"prime"?the?request?
    ????????}?
    ????}

    2.2.2時:
    public?void?prepare(HttpServletRequest?request,?HttpServletResponse?response)?{?
    ????????String?encoding?
    =?null;?
    ????????
    if?(Configuration.isSet(WebWorkConstants.WEBWORK_I18N_ENCODING))?{?
    ????????????encoding?
    =?Configuration.getString(WebWorkConstants.WEBWORK_I18N_ENCODING);?
    ????????}?

    ????????Locale?locale?
    =?null;?
    ????????
    if?(Configuration.isSet(WebWorkConstants.WEBWORK_LOCALE))?{?
    ????????????locale?
    =?LocalizedTextUtil.localeFromString(Configuration.getString(WebWorkConstants.WEBWORK_LOCALE),?request.getLocale());?
    ????????}?

    ????????
    if?(encoding?!=?null?&&?!MultiPartRequest.isMultiPart(request))?{?
    ????????????
    try?{?
    ????????????????request.setCharacterEncoding(encoding);?
    ????????????}?
    catch?(Exception?e)?{?
    ????????????????LOG.error(
    "Error?setting?character?encoding?to?'"?+?encoding?+?"'?-?ignoring.",?e);?
    ????????????}?
    ????????}?

    ????????
    if?(locale?!=?null)?{?
    ????????????response.setLocale(locale);?
    ????????}?

    ????????
    if?(paramsWorkaroundEnabled)?{?
    ????????????request.getParameter(
    "foo");?//?simply?read?any?parameter?(existing?or?not)?to?"prime"?the?request?
    ????????}?
    ????}


    我看了jira沒有發(fā)現(xiàn)encoding != null && !MultiPartRequest.isMultiPart(request)這個判斷的意義。但是它會造成對multiPartRequest的encoding判斷失敗,中文就會亂碼。
    所以臨時的解決方案是將判斷改成:
    if (encoding != null)

    聽說WW的Jira已經(jīng)不接受新issue了,不知是否真的? Crying or Very sad
    posted on 2006-03-30 21:40 Tin 閱讀(3969) 評論(11)  編輯  收藏 所屬分類: Webwork相關

    評論

    # re: WebWork 2.2.2中文上傳亂碼問題[臨時解決方案] 2006-05-20 02:46 vinson
    用了一個比較苯的辦法
    自己寫了個FileUploadInterceptor
    加了個方法:
    private Map reEncode(Map parameters) throws IOException{
    String keys = "";
    byte [] temp_t = new byte[]{};
    Set entries = parameters.keySet();
    Iterator it = entries.iterator();
    while (it.hasNext()){
    keys = (String)it.next();
    if (parameters.get(keys)!=null && parameters.get(keys) instanceof java.lang.String[]){
    temp_t = ((String[])parameters.get(keys))[0].getBytes("ISO8859_1");
    parameters.put(keys, new String(temp_t,"GBK"));
    }
    }
    return parameters;
    }
    然后在下面這個地方用一下:
    Map parameters = reEncode(ac.getParameters());  回復  更多評論
      

    # re: WebWork 2.2.2中文上傳亂碼問題[臨時解決方案] 2006-05-24 10:13 Tin
    呵呵,其實我覺得不如上面說的那個解決徹底。因為問題就出在上面描述的位置,我去Webwork論壇問了,他們也說問題就在這里,現(xiàn)在只需if (encoding != null) 然后每次都request.setCharacterEncoding(encoding);就可以了,不需要手工轉碼。  回復  更多評論
      

    # re: WebWork 2.2.2中文上傳亂碼問題[臨時解決方案] 2006-05-24 14:02 gaston
    用utf-8不可以嗎?  回復  更多評論
      

    # re: WebWork 2.2.2中文上傳亂碼問題[臨時解決方案] 2006-05-24 16:55 Tin
    是2.2.2的bug,和UTF-8沒有直接關系。  回復  更多評論
      

    # re: WebWork 2.2.2中文上傳亂碼問題[臨時解決方案] 2006-05-26 16:16 grave
    改了后 拋異常...ERROR [2006-05-26 16:14:32] DispatcherUtils.prepare(402) | Error setting character encoding to 'GBK' - ignoring.
    java.lang.IllegalStateException: getReader() or getInputStream() called
    at org.mortbay.jetty.servlet.ServletHttpRequest.setCharacterEncoding(ServletHttpRequest.java:602)
    at javax.servlet.ServletRequestWrapper.setCharacterEncoding(ServletRequestWrapper.java:105)
    at com.opensymphony.webwork.dispatcher.DispatcherUtils.prepare(DispatcherUtils.java:400)
    at com.opensymphony.webwork.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:158)
    at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821)
    at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:118)
    at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:52)
    at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821)
    at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821)
    at com.opensymphony.webwork.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:78)
    at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821)
    at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:471)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568)
    at org.mortbay.http.HttpContext.handle(HttpContext.java:1530)
    at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:633)
    at org.mortbay.http.HttpContext.handle(HttpContext.java:1482)
    at org.mortbay.http.HttpServer.service(HttpServer.java:909)
    at org.mortbay.http.HttpConnection.service(HttpConnection.java:816)
    at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:982)
    at org.mortbay.http.HttpConnection.handle(HttpConnection.java:833)
    at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:244)
    at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357)
    at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)  回復  更多評論
      

    # re: WebWork 2.2.2中文上傳亂碼問題[臨時解決方案] 2006-05-29 16:19 Tin
    GBK沒有測試:D
    還有,你用的Jetty我也沒有測試。我在Weblogic 9和Tomcat 5上測試通過。你調試一下看看能否搞定:D  回復  更多評論
      

    # re: WebWork 2.2.2中文上傳亂碼問題[臨時解決方案] 2006-06-05 15:59 xwiki.com.cn
    http://www.xwiki.com.cn/archives/6 也有類似的答案,還有其它關于webwork2.2.2的中文問題。  回復  更多評論
      

    # re: WebWork 2.2.2中文上傳亂碼問題[臨時解決方案] 2006-06-12 14:27 桐妍無忌
    是不是要修改源碼啊,但是要反編譯,和編譯回來,還要打jar包,反編譯好像都通不過啊,咋辦啊,救命哦!  回復  更多評論
      

    # re: WebWork 2.2.2中文上傳亂碼問題[臨時解決方案] 2006-06-12 15:57 Tin
    不用反編譯,WebWork2是開源的。只需將修改過的源文件編譯后拷貝到/WEB-INF/classes相應目錄下就可以,Classloader優(yōu)先訪問/classes,然后才是/lib。  回復  更多評論
      

    # re: WebWork 2.2.2中文上傳亂碼問題[臨時解決方案] 2006-06-15 11:43 桐妍無忌
    暈啊,怎么放到/WEB-INF/classes相應目錄下了,那個目錄不是寫的程序編譯出來的class文件么,我說的是改lib下面的webwork-2.2.2.jar程序(這個是webwork內置的包),改這個內置包放到/WEB-INF/classes相應目錄下能起作用么,我是菜鳥,不懂怎么弄啊,我的QQ:52561097,謝謝指教啊:)  回復  更多評論
      

    # re: WebWork 2.2.2中文上傳亂碼問題[臨時解決方案] 2007-04-09 13:48 zzuizui
    struts2似乎也有這個問題, 可是沒有com.opensymphony.webwork.dispatcher.DispatcherUtils這個類了,大家是怎么處理的?
      回復  更多評論
      

    主站蜘蛛池模板: 亚洲一区二区三区四区视频 | 黄网站色视频免费观看45分钟 | 日韩视频在线免费观看| 亚洲毛片一级带毛片基地| 免费国产99久久久香蕉| 亚洲AV永久无码精品水牛影视 | 99热亚洲色精品国产88| 日韩欧毛片免费视频| 国产成人亚洲合集青青草原精品| 免费无码精品黄AV电影| 亚洲老熟女五十路老熟女bbw| 日韩免费三级电影| 免费夜色污私人影院网站电影| 免费成人在线观看| 国产一级在线免费观看| 亚洲综合无码一区二区| 免费精品人在线二线三线区别| 国产AV无码专区亚洲AV麻豆丫 | 亚洲欧洲日本国产| 免费看国产成年无码AV片| 美女尿口扒开图片免费| 日韩精品亚洲aⅴ在线影院| 久久精品国产免费| jlzzjlzz亚洲jzjzjz| 免费观看国产精品| APP在线免费观看视频| 亚洲国产精品yw在线观看| 国产精品国产自线拍免费软件| xxxxx做受大片视频免费| 亚洲一区二区中文| 日本高清免费aaaaa大片视频| 一个人晚上在线观看的免费视频 | 亚洲AV无码一区东京热久久 | 四虎影视久久久免费| 麻豆亚洲AV永久无码精品久久| 免费中文熟妇在线影片| 好湿好大好紧好爽免费视频| 亚洲国产成a人v在线| 亚洲视频在线一区二区| 美女视频黄免费亚洲| 思思久久99热免费精品6|