浏览 2971 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (3) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-05-02
原文:http://www.blogjava.net/JavaVM/archive/2006/07/06/57053.html 因为使用了sitemesh,所以在文件com.opensymphony.module.sitemesh.filter.PageFilter 中的 response.setContentLength(page.getContentLength()); 出现问题。这样写法是没有考虑到中文问题。 做如下修改: 1、 int originalLength = page.getContentLength();//原来的长度 2、 int bodyCNLenght = page.getBody().getBytes().length-page.getBody().length();//内容处理中文长度 3、 int titleCNLength = page.getTitle().getBytes().length-page.getTitle().length();//title处理中文长度 4、 int javascriptCNOfhead = page instanceof FastPage? ((FastPage)page).getHead().getBytes().length-((FastPage)page).getHead().length()):0 ;//head的长度,因为javascript中可能包括中文 5、 response.setContentLength(originalLength+bodyCNLenght+titleCNLength+javascriptCNOfhead); 另: firmgoal老兄的文章中也提到过此问题,他的文章:wicket+struts2+sitemesh+freemarker页面显示不全的解决方案 显示不全的原因为wicket有时候会设置Response的ContentLength,struts2的sitemesh插件在处理freemarker修饰页时会错误地使用该ContentLength,导致最终页面的大小变成被修饰页面的大小,因此页面显示不全。 解决方案,修改FreeMarkerPageFilter FreeMarkerPageFilter的源文件在此: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/FreeMarkerPageFilter.java?view=markup&pathrev=475013 157行: template.process(model, res.getWriter()); 改为: res.setContentLength(-1); template.process(model, res.getWriter()); 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-05-02
以前试用过,好像中文没有出现什么问题
|
|
返回顶楼 | |