![]() Appfuse框架中的Ajax
![]() <sitemesh> <property name="decorators-file" value="/WEB-INF/decorators.xml"/> <excludes file="${decorators-file}"/> <page-parsers> <parser default="true" class="com.opensymphony.module.sitemesh.parser.HTMLPageParser"/> <parser content-type="text/html" class="com.opensymphony.module.sitemesh.parser.HTMLPageParser"/> <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.ConfigDecoratorMapper"> <param name="config" value="${decorators-file}"/> </mapper> </decorator-mappers> </sitemesh> Ajax请求一般要求responseText为简单文本或者XML文本。数据量较少时采用无格式简单文本;如果数据量比较大,通常采用XML数据。 后一种情况下,需要在处理Ajax请求的Action中,设置 response.setContentType("text/xml;charset=UTF-8"); response.setHeader("Cache-Control", "no-cache"); 然后创建输出流对象并response数据: PrintWriter out = response.getWriter(); out.println("<?xml version='1.0' encoding='UTF-8'?>"); out.println("<root>"); out.println("<result>"); ...... out.close(); 如果是在Appfuse框架下使用的Ajax,就要避免response被Sitemesh封装起来,变成了HTML文本(表现在浏览器端,应该会得到Sitemesh的修饰文件,内嵌了response文本) 解决方法是修改decorators.xml中的配置将处理Ajax的Action排除到默认修饰以外。 ![]() |
Appfuse框架中的Ajax
最新推荐文章于 2025-08-12 15:10:50 发布