论坛首页 Java版 企业应用

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

浏览 5683 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
时间:2007-08-21 关键字: tapestry
现在正在使用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版 企业应用

跳转论坛: