论坛首页 Java企业应用论坛

T5 技巧 1:解决Form的提交乱码问题。

浏览 16384 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-08-21  
现在正在使用T5开发一个小项目。 因为现在T5还正处于发展中。 而且没有像T4一样有许多的文档。 和例子(Workbench, Vlib)。 所以我会把在这个开发中遇到的一些问题记录下来。


tapestry5.0.5现在默认支持UTF-8编码。 但是发现在form提交数据后。 数据变成了乱码。

解决方案是增加一个Filter。


    public RequestFilter buildUtf8Filter(
        @InjectService("RequestGlobals") final RequestGlobals requestGlobals)
    {
        return new RequestFilter()
        {
            public boolean service(Request request, Response response, RequestHandler handler)
                throws IOException
            {
                requestGlobals.getHTTPServletRequest().setCharacterEncoding("UTF-8");
                return handler.service(request, response);
            }
        };
    }


然后contribute给RequestHandler。

    public void contributeRequestHandler(OrderedConfiguration<RequestFilter> configuration,
            @InjectService("TimingFilter") final RequestFilter timingFilter,
            @InjectService("Utf8Filter") final RequestFilter utf8Filter)
    {
        configuration.add("Utf8Filter", utf8Filter); // handle UTF-8
        configuration.add("Timing", timingFilter);
    }


以上代码都是放在AppModule.java中。。

参考:http://wiki.apache.org/tapestry/Tapestry5Utf8Encoding
   发表时间:2007-08-22  
5.0.5我在使用中没有遇到乱码问题。
在5.0.5之前,为了使中文能够正常显示,我也使用了你提到的文档中所使用的方法,但5.0.5似乎已经解决了这个问题。至少,我目前还没有碰到form提交乱码的现象。
0 请登录后投票
   发表时间:2007-08-22  
Linuxboy 写道
5.0.5我在使用中没有遇到乱码问题。
在5.0.5之前,为了使中文能够正常显示,我也使用了你提到的文档中所使用的方法,但5.0.5似乎已经解决了这个问题。至少,我目前还没有碰到form提交乱码的现象。


页面和java class全部使用utf8编码。  mysql 数据库也是使用utf8.

在页面显示的时候没有问题。  但是在提交form时有编码问题。
0 请登录后投票
   发表时间:2007-08-22  
引用
页面和java class全部使用utf8编码。 mysql 数据库也是使用utf8.

在页面显示的时候没有问题。 但是在提交form时有编码问题。


真是郁闷,我的环境和楼主一样的,但是我这样做了,还是乱码。
页面直接显示中文没问题。
0 请登录后投票
   发表时间:2007-08-22  
koda 写道
引用
页面和java class全部使用utf8编码。 mysql 数据库也是使用utf8.

在页面显示的时候没有问题。 但是在提交form时有编码问题。


真是郁闷,我的环境和楼主一样的,但是我这样做了,还是乱码。
页面直接显示中文没问题。


表单提交了乱码多半和servlet container有关系.如果是代码部分,可以参考lichen中的处理:

http://lichen-forum.googlecode.com/svn/trunk/src/main/java/lichen/render/RenderModule.java

目前在系统跑在linux tomcat5  mysql5 的平台上,未发现乱码情况。

0 请登录后投票
   发表时间:2007-08-22  
superaxis 写道
koda 写道
引用
页面和java class全部使用utf8编码。 mysql 数据库也是使用utf8.

在页面显示的时候没有问题。 但是在提交form时有编码问题。


真是郁闷,我的环境和楼主一样的,但是我这样做了,还是乱码。
页面直接显示中文没问题。


表单提交了乱码多半和servlet container有关系.如果是代码部分,可以参考lichen中的处理:

http://lichen-forum.googlecode.com/svn/trunk/src/main/java/lichen/render/RenderModule.java

目前在系统跑在linux tomcat5  mysql5 的平台上,未发现乱码情况。



Really?  听你这样一说 还觉得真的可能。   我的环境是jetty。
0 请登录后投票
   发表时间:2007-08-22  
tapestry wiki上说 tapestry5.0.5  默认的已经是utf-8

所以  public static PageResponseRenderer decoratePageResponseRenderer  这个方法应该是不用了。
0 请登录后投票
   发表时间:2007-08-22  
dengyin2000 写道
tapestry wiki上说 tapestry5.0.5  默认的已经是utf-8

所以  public static PageResponseRenderer decoratePageResponseRenderer  这个方法应该是不用了。


thanks.已经删掉并且提交了。
0 请登录后投票
   发表时间:2007-08-22  
我的环境也是jetty,但是就是乱码
0 请登录后投票
   发表时间:2007-08-22  
koda 写道
我的环境也是jetty,但是就是乱码


确定你的html 和 java 文件的编码用的是utf-8?  eclipse的话  在文件上右键  ---》 然后properties。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics