标签:
当Crystal Portlet中需要采用Ajax请求,并让后台返回Json数据时,如何才能正确、方便的返回Json数据呢?
以下两种方法均可:
方法一:Ajax请求时,采用RenderURL,对应Portlet类中采用ajax(data)方法返回Java对象即可;
方法二:Ajax请求时,采用ResourceURL,对应Portlet类中采用ajax(data,response)方法将Java对象直接输出到Response流中;(推荐使用此方法)
方法一:
对应访问的Portlet Class中,创建对应方法,并采用ajax(data)方式返回,如下代码示例:
@RequestMapping(params = "action=getUserById") public String ajaxRenderUrlTest( @RequestParam String id){ User user = userService.getUserById(id); return ajax(user); }
在portlet的/WEB-INF/spring/common/jstl-portlet.xml文件中,采用如下配置,替换viewResolver bean的配置:
<bean id="viewResolver" class="com.gsoft.crystal.portlet.CrystalInternalResourceViewResolver" abstract="true"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="basePrefix" value="/WEB-INF/jsp" /> <property name="suffix" value=".jsp" /> <property name="contentType" value="text/html;charset=UTF-8" /> <property name="order" value="1" /> </bean>
class采用com.gsoft.crystal.portlet.CrystalInternalResourceViewResolver替换;
方法二:(推荐使用)
对应访问的Portlet Class中,创建对应方法,并采用ajax(data,response)方式返回,如下代码示例:
@ResourceMapping("testAjax") public void ajaxTest(ResourceResponse response, @RequestParam String id) throws IOException { User user = userService.getUserById(id); ajax(user, response); }
前台ajax调用示例代码如下:
$.ajax({ type:‘post‘, url:‘<portlet:resourceURL id="testAjax"/>‘, data:{ <portlet:namespace/>id:110 }, success:function(data){ } });
如何在Crystal Portlet中正确返回JSON数据给AJAX请求?
标签:
原文地址:http://www.cnblogs.com/luoruiyuan/p/5788653.html