- weishuwei
- 等级:
- 性别:
- 文章: 50
- 积分: 114
- 来自: 上海
|
今天测试平台时,发现一个页面只显示了一半,后半截没了,用dw验证了一个html,没发现什么问题,想了一下,问题只能出在sitemesh上,于是把sitemesh先注释掉,果然这个页面可以正常显示了.
注:这个页面是以前的,没有用到sitemesh控制布局结构,我把该页面 改为用sitemesh布局后,也能正常显示.
web.xml中配置的过滤器:
- <filter>
- <filter-name>Acegi Filter Chain Proxy</filter-name>
- <filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class>
- <init-param>
- <param-name>targetClass</param-name>
- <param-value>org.acegisecurity.util.FilterChainProxy</param-value>
- </init-param>
- </filter>
- <filter>
- <filter-name>webwork-cleanup</filter-name>
- <filter-class>com.opensymphony.webwork.dispatcher.ActionContextCleanUp</filter-class>
- </filter>
- <filter>
- <filter-name>sitemesh</filter-name>
- <filter-class>com.opensymphony.webwork.sitemesh.FreeMarkerPageFilter</filter-class>
- </filter>
- <filter>
- <filter-name>webwork</filter-name>
- <filter-class>com.opensymphony.webwork.dispatcher.FilterDispatcher</filter-class>
- </filter>
-
- <filter-mapping>
- <filter-name>Acegi Filter Chain Proxy</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- <filter-mapping>
- <filter-name>webwork-cleanup</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- <filter-mapping>
- <filter-name>sitemesh</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- <filter-mapping>
- <filter-name>webwork</filter-name>
- <url-pattern>*.action</url-pattern>
- </filter-mapping>
siteMesh.xml配置如下:
- <sitemesh>
- <property name="decorators-file" value="/WEB-INF/decorators.xml"/>
- <excludes file="${decorators-file}"/>
-
- <page-parsers>
- <parser content-type="text/html" class="com.opensymphony.module.sitemesh.parser.FastPageParser"/>
- <parser content-type="text/html;charset=UTF-8"
- class="com.opensymphony.module.sitemesh.parser.HTMLPageParser" />
- </page-parsers>
-
- <decorator-mappers>
-
- <mapper class="com.opensymphony.module.sitemesh.mapper.PageDecoratorMapper">
- <param name="property.1" value="meta.decorator"/>
- <param name="property.2" value="decorator"/>
- </mapper>
-
- <mapper class="com.opensymphony.module.sitemesh.mapper.FrameSetDecoratorMapper">
- </mapper>
-
- <mapper class="com.opensymphony.module.sitemesh.mapper.AgentDecoratorMapper">
- <param name="match.MSIE" value="ie"/>
- <param name="match.Mozilla [" value="ns"/>
- <param name="match.Opera" value="opera"/>
- <param name="match.Lynx" value="lynx"/>
- </mapper>
-
- <mapper class="com.opensymphony.module.sitemesh.mapper.PrintableDecoratorMapper">
- <param name="decorator" value="printable"/>
- <param name="parameter.name" value="printable"/>
- <param name="parameter.value" value="true"/>
- </mapper>
-
- <mapper class="com.opensymphony.module.sitemesh.mapper.RobotDecoratorMapper">
- <param name="decorator" value="robot"/>
- </mapper>
-
- <mapper class="com.opensymphony.module.sitemesh.mapper.ParameterDecoratorMapper">
- <param name="decorator.parameter" value="decorator"/>
- <param name="parameter.name" value="confirm"/>
- <param name="parameter.value" value="true"/>
- </mapper>
-
- <mapper class="com.opensymphony.module.sitemesh.mapper.FileDecoratorMapper">
- </mapper>
-
- <mapper class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper">
- <param name="config" value="${decorators-file}"/>
- </mapper>
-
- </decorator-mappers>
-
- </sitemesh>
我的表示层用的是Freemarker,在项目里不是直接访问Freemarker的,都有有webwork的action转发过去的.
个人觉得可能是以下原因:
1,sitemesh对页面的大小有限制,只能输出大小为一定量的响应流.??
2,配置有问题,可能是那里配置有误,或者是acegi过滤器和sitemesh是否会冲突??
那位遇到同样的问题或者有好的解决方案,大家探讨一下.
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
返回顶楼 |
|
|
- LucasLee
- 等级:
- 性别:
- 文章: 1217
- 积分: 1303
- 来自: 上海
|
就我的经验来说一般不会有大小的限制,而是页面在中间出错了,导致只输出了一半,仔细检查异常信息.
|
返回顶楼 |
|
|
- Sunteya
- 等级: 初级会员
- 文章: 17
- 积分: 78
|
sitemesh 的一个典型错误是 会在中文环境下设置错误的 Content Length 你可以看看 springside 的 UnicodePageFilter
|
返回顶楼 |
|
|
- weishuwei
- 等级:
- 性别:
- 文章: 50
- 积分: 114
- 来自: 上海
|
查看sitemesh API,发现对FastPageParser的解释,原来FastPageParser将被HTMLPageParser替代 Deprecated. Use HTMLPageParser instead - it performs better and is more extensible.
|
返回顶楼 |
|
|
- 我想我是海
- 等级:
- 文章: 105
- 积分: 362
|
<excludes> <pattern>/exclude/*</pattern> </excludes>
|
返回顶楼 |
|
|
- weishuwei
- 等级:
- 性别:
- 文章: 50
- 积分: 114
- 来自: 上海
|
感谢"我想我是海"的建议,该项我已经配置过了,还是会出现上述情况.
ps:看sitemesh api,说是FastPageParser将被HTMLPageParser替代,于是把配置文件中的FastPageParser改为HTMLPageParser,结果导致siteMesh不能工作!!!狂晕中
|
返回顶楼 |
|
|
- firmgoal
- 等级:
- 文章: 36
- 积分: 304
|
有可能是被修饰页面设置了contentLength,导致修饰出的页面的contentLength有问题。如果是这种情况,修改一下com.opensymphony.webwork.sitemesh.FreeMarkerPageFilter,加上response.setContentLength(-1)就行。
|
返回顶楼 |
|
|
|
我也遇到过这个问题,好像只需要在这个页面也加上sitemesh标签就行了!
|
返回顶楼 |
|
|