读书人

sitemesh导致页面不能正常显示有关问题

发布时间: 2012-11-10 10:48:50 作者: rapoo

sitemesh导致页面不能正常显示问题
今天测试平台时,发现一个页面只显示了一半,后半截没了,用dw验证了一个html,没发现什么问题,想了一下,问题只能出在sitemesh上,于是把sitemesh先注释掉,果然这个页面可以正常显示了.
注:这个页面是以前的,没有用到sitemesh控制布局结构,我把该页面改为用sitemesh布局后,也能正常显示.
web.xml中配置的过滤器:?

  1. <filter>??
  2. ????<filter-name>Acegi?Filter?Chain?Proxy</filter-name>??
  3. ????<filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class>??
  4. ????<init-param>??
  5. ????????<param-name>targetClass</param-name>??
  6. ????????<param-value>org.acegisecurity.util.FilterChainProxy</param-value>??
  7. ????</init-param>??
  8. </filter>??
  9. <filter>??
  10. ????<filter-name>webwork-cleanup</filter-name>??
  11. ????<filter-class>com.opensymphony.webwork.dispatcher.ActionContextCleanUp</filter-class>??
  12. </filter>??
  13. <filter>??
  14. ????<filter-name>sitemesh</filter-name>??
  15. ????<filter-class>com.opensymphony.webwork.sitemesh.FreeMarkerPageFilter</filter-class>??
  16. </filter>??
  17. <filter>??
  18. ????<filter-name>webwork</filter-name>??
  19. ????<filter-class>com.opensymphony.webwork.dispatcher.FilterDispatcher</filter-class>??
  20. </filter>??
  21. ??
  22. <filter-mapping>??
  23. ????<filter-name>Acegi?Filter?Chain?Proxy</filter-name>??
  24. ????<url-pattern>/*</url-pattern>??
  25. </filter-mapping>??
  26. <filter-mapping>??
  27. ????????<filter-name>webwork-cleanup</filter-name>??
  28. ????????<url-pattern>/*</url-pattern>??
  29. </filter-mapping>??
  30. <filter-mapping>??
  31. ????????<filter-name>sitemesh</filter-name>??
  32. ????????<url-pattern>/*</url-pattern>??
  33. </filter-mapping>??
  34. <filter-mapping>??
  35. ????????<filter-name>webwork</filter-name>??
  36. ????????<url-pattern>*.action</url-pattern>??
  37. </filter-mapping>??

siteMesh.xml配置如下:?
  1. <sitemesh>??
  2. ????<property?name="decorators-file"?value="/WEB-INF/decorators.xml"/>??
  3. ????<excludes?file="${decorators-file}"/>??
  4. ??
  5. ????<page-parsers>??
  6. ????????<parser?content-type="text/html"?class="com.opensymphony.module.sitemesh.parser.FastPageParser"/>??
  7. ????????<parser?content-type="text/html;charset=UTF-8"??
  8. ????????????class="com.opensymphony.module.sitemesh.parser.HTMLPageParser"?/>??
  9. ????</page-parsers>??
  10. ??
  11. ????<decorator-mappers>??
  12. ??
  13. ????????<mapper?class="com.opensymphony.module.sitemesh.mapper.PageDecoratorMapper">??
  14. ????????????<param?name="property.1"?value="meta.decorator"/>??
  15. ????????????<param?name="property.2"?value="decorator"/>??
  16. ????????</mapper>??
  17. ??
  18. ????????<mapper?class="com.opensymphony.module.sitemesh.mapper.FrameSetDecoratorMapper">??
  19. ????????</mapper>??
  20. ??
  21. ????????<mapper?class="com.opensymphony.module.sitemesh.mapper.AgentDecoratorMapper">??
  22. ????????????<param?name="match.MSIE"?value="ie"/>??
  23. ????????????<param?name="match.Mozilla?["?value="ns"/>??
  24. ????????????<param?name="match.Opera"?value="opera"/>??
  25. ????????????<param?name="match.Lynx"?value="lynx"/>??
  26. ????????</mapper>??
  27. ??
  28. ????????<mapper?class="com.opensymphony.module.sitemesh.mapper.PrintableDecoratorMapper">??
  29. ????????????<param?name="decorator"?value="printable"/>??
  30. ????????????<param?name="parameter.name"?value="printable"/>??
  31. ????????????<param?name="parameter.value"?value="true"/>??
  32. ????????</mapper>??
  33. ??
  34. ????????<mapper?class="com.opensymphony.module.sitemesh.mapper.RobotDecoratorMapper">??
  35. ????????????<param?name="decorator"?value="robot"/>??
  36. ????????</mapper>??
  37. ??
  38. ????????<mapper?class="com.opensymphony.module.sitemesh.mapper.ParameterDecoratorMapper">??
  39. ????????????<param?name="decorator.parameter"?value="decorator"/>??
  40. ????????????<param?name="parameter.name"?value="confirm"/>??
  41. ????????????<param?name="parameter.value"?value="true"/>??
  42. ????????</mapper>??
  43. ??
  44. ????????<mapper?class="com.opensymphony.module.sitemesh.mapper.FileDecoratorMapper">??
  45. ????????</mapper>??
  46. ??
  47. ????????<mapper?class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper">??
  48. ????????????<param?name="config"?value="${decorators-file}"/>??
  49. ????????</mapper>??
  50. ??
  51. ????</decorator-mappers>??
  52. ??
  53. </sitemesh>??


我的表示层用的是Freemarker,在项目里不是直接访问Freemarker的,都有有webwork的action转发过去的.
个人觉得可能是以下原因:
1,sitemesh对页面的大小有限制,只能输出大小为一定量的响应流.??
2,配置有问题,可能是那里配置有误,或者是acegi过滤器和sitemesh是否会冲突??
那位遇到同样的问题或者有好的解决方案,大家探讨一下.
1 楼 LucasLee 2007-06-12 就我的经验来说一般不会有大小的限制,而是页面在中间出错了,导致只输出了一半,仔细检查异常信息. 2 楼 Sunteya 2007-06-12 sitemesh 的一个典型错误是 会在中文环境下设置错误的 Content Length
你可以看看 springside 的 UnicodePageFilter 3 楼 weishuwei 2007-06-19 查看sitemesh API,发现对FastPageParser的解释,原来FastPageParser将被HTMLPageParser替代
Deprecated. Use HTMLPageParser instead - it performs better and is more extensible. 4 楼 我想我是海 2007-06-19 <excludes>
<pattern>/exclude/*</pattern>
</excludes> 5 楼 weishuwei 2007-06-20 感谢"我想我是海"的建议,该项我已经配置过了,还是会出现上述情况.

ps:看sitemesh api,说是FastPageParser将被HTMLPageParser替代,于是把配置文件中的FastPageParser改为HTMLPageParser,结果导致siteMesh不能工作!!!狂晕中 6 楼 firmgoal 2007-06-21 有可能是被修饰页面设置了contentLength,导致修饰出的页面的contentLength有问题。如果是这种情况,修改一下com.opensymphony.webwork.sitemesh.FreeMarkerPageFilter,加上response.setContentLength(-1)就行。 7 楼 pure 2007-06-21 我也遇到过这个问题,好像只需要在这个页面也加上sitemesh标签就行了!

读书人网 >软件架构设计

热点推荐