当Crystal Portlet中需要采用Ajax请求,并让后台返回Json数据时,如何才能正确、方便的返回Json数据呢?

以下两种方法均可:

方法一:Ajax请求时,采用RenderURL,对应Portlet类中采用ajax(data)方法返回Java对象即可;

方法二:Ajax请求时,采用ResourceURL,对应Portlet类中采用ajax(data,response)方法将Java对象直接输出到Response流中;(推荐使用此方法)

分步指南

方法一:

  1. Ajax请求时,url采用RenderURL生成,与普通的portlet请求无差异;
  2. 对应访问的Portlet Class中,创建对应方法,并采用ajax(data)方式返回,如下代码示例:

    @RequestMapping(params = "action=getUserById")
    public String ajaxRenderUrlTest( @RequestParam String id){
    User user = userService.getUserById(id);
    return ajax(user);
    }

      

  3. 此时,可能会出现“common/_ajax.jsp文件找不到”的错误,按如下方法处理:
    1. 确保项目使用最新版本Crystal-portlet-core 2.4快照及以上版本;
    2. 在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>

        

      1. class采用com.gsoft.crystal.portlet.CrystalInternalResourceViewResolver替换;

      2. 增加basePrefix变量,值为jsp文件所在根目录,如:/WEB-INF/jsp。

方法二:(推荐使用)

  1. Ajax请求时,url采用ResourceURL生成;
  2. 对应访问的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);
    }

      

  3. 前台ajax调用示例代码如下:

    $.ajax({
    type:'post',
    url:'<portlet:resourceURL id="testAjax"/>',
    data:{
    <portlet:namespace/>id:110
    },
    success:function(data){ }
    });

      

如何在Crystal Portlet中正确返回JSON数据给AJAX请求?的更多相关文章

  1. 开发Portlet第三步:如何在Crystal Portlet中调用远程服务?

    当基于测试数据的Portlet调试完成后,接下来就是引入远程服务,替换测试数据. (此处以Dubbo框架远程服务为例) 分步指南 删除测试数据依赖:在pom.xml文件中,删除对****-servic ...

  2. 深入了解Struts2返回JSON数据的原理

    首先来看一下JSON官方对于"JSON"的解释: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析 ...

  3. (转)Struts2返回JSON数据的具体应用范例

    转载自 yshjava的个人博客主页 <Struts2返回JSON数据的具体应用范例> 早在我刚学Struts2之初的时候,就想写一篇文章来阐述Struts2如何返回JSON数据的原理和具 ...

  4. Struts2返回JSON数据的具体应用范例

    早在我刚学Struts2之初的时候,就想写一篇文章来阐述Struts2如何返回JSON数据的原理和具体应用了,但苦于一直忙于工作难以抽身,渐渐的也淡忘了此事.直到前两天有同事在工作中遇到这个问题,来找 ...

  5. echo json数据给ajax后, 需要加上exit,防止往下执行,带上其他数据,到时ajax失败

    01返回json数据给ajax后需要加上exit.返回json数据前不能有其他输出 function apply(){ if(IS_POST){$info['status'] = 1; echo js ...

  6. Flask Response响应(flask中设置响应信息的方法,返回json数据的方法)

    设置响应信息的方法 1.  返回自定义的响应头,有两种方式: (1)  第一种是:视图函数return的时候,使用元组,返回自定义的信息 返回的时候的状态码可以自定义信息:"状态码   自定 ...

  7. 使用jQuery解析JSON数据(由ajax发送请求到php文件处理数据返回json数据,然后解析json写入html中呈现)

    在上一篇的Struts2之ajax初析中,我们得到了comments对象的JSON数据,在本篇中,我们将使用jQuery进行数据解析. 我们先以解析上例中的comments对象的JSON数据为例,然后 ...

  8. C#调用接口返回json数据中含有双引号 或其他非法字符的解决办法

    这几天,调用别人接口返回json数据含有特殊符号(双引号),当转换成json对象总是报错, json字符格式如下 { "BOXINFO":[ { ", "ITE ...

  9. 通过flask中的Response返回json数据

    使用flask的过程中,发现有时需要生成一个Response并返回.网上查了查,看了看源码,找到了两种办法: from flask import Response, json Response(jso ...

随机推荐

  1. KMP单模快速字符串匹配算法

    KMP算法是由Knuth,Morris,Pratt共同提出的算法,专门用来解决模式串的匹配,无论目标序列和模式串是什么样子的,都可以在线性时间内完成,而且也不会发生退化,是一个非常优秀的算法,时间复杂 ...

  2. 【Git】笔记3

    来源:廖雪峰 远程仓库 远程仓库采用github 准备工作:创建远程仓库 1.创建一个github账号 2.在本地设置ssh,获取/home/user/.ssh/id_rsa.pub内容 3.在git ...

  3. HDU 4793 Collision (解二元一次方程) -2013 ICPC长沙赛区现场赛

    题目链接 题目大意 :有一个圆硬币半径为r,初始位置为x,y,速度矢量为vx,vy,有一个圆形区域(圆心在原点)半径为R,还有一个圆盘(圆心在原点)半径为Rm (Rm < R),圆盘固定不动,硬 ...

  4. jsp通过s:hidden传值给后台,后台数据出现了若干逗号问题

    <s:iterator value="rpActionVO.page.result" id="list" status="st"> ...

  5. IOS- 内存管理机制

    iOS平台内存常见问题 作为iOS平台的开发者,是否曾经为内存问题而苦恼过?内存莫名的持续增长,程序莫名的crash,难以发现 的内存泄漏,这些都是iOS平台内存相关的常见问题:本文将会详细介绍iOS ...

  6. NodeVisitor的使用-遍历Geode节点并在它与父节点之间添加一个LOD节点

    #include <osg\NodeVisitor>#include <osg\MatrixTransform>#include <osg\PagedLOD>#in ...

  7. js windows对象

    一.DOM操作 windows对象操作 document对象操作     二.属性.事件 1.window的属性: window.shuxing(属性) window.fangfa()(方法) 方法后 ...

  8. CLR via C#(05)- 访问限定、数据成员

    今天跟大家分享一下关于访问限定和数据成员的知识.主要包括以下两点: Abstract, sealed, virtual, new, override怎么用? Const 和 readonly好像都表示 ...

  9. Android ANR分析(1)

    转自:http://blog.csdn.net/itachi85/article/details/6918761 一:什么是ANR ANR:Application Not Responding,即应用 ...

  10. hdu 1247:Hat’s Words(字典树,经典题)

    Hat’s Words Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...