全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解Struts2中json 相互引用死循环解决办法

方法1 :利用Struts 2的支持的可配置结果,可以达到过滤器的效果。Action的处理结果配置支持正则表达式。

但是如果返回的对象是一个数组格式的Json数据。比如peson Bean中有对象persion1…person9,而我只要person1的json数据, 则可以用如下的正则表达式。

<struts>
  <constant name="struts.objectFactory" value="spring"/>  
  <include file="struts-admin.xml"></include>
  <package name="default" extends="json-default">
    <action name="person" class="com.person.PersonAction" method="view">
    <result type="json">
      <param name="includeProperties">     
      person/[/d+/]/.person1
      </param>>     
    </result>
    </action>
  </package>   
</struts>

excludeProperties拦截器的用法与此类同,如果拦截的仅仅是一个对象,如果拦截掉person Bean的整个对象。

<struts>
  <constant name="struts.objectFactory" value="spring"/>  
  <include file="struts-admin.xml"></include>
  <package name="default" extends="json-default">
    <action name="person" class="com.person.PersonAction" method="view">
    <result type="json">
      <param name="excludeProperties">     
      person
      </param>>     
    </result>
    </action>
  </package>   
</struts>

方法2:需要注意的是,如果用JSON插件把返回结果定为JSON。而JSON的原理是在ACTION中的get方法都会序列化

所以前面是get的方法只要没指定不序列化,都会执行。 如果该方法一定要命名为get*(比如实现了什么接口), 那么可以在该方法的前面加注解声明该方法不做序列化。

注解的方式为:@JSON(serialize=false)

除此之外,JSON注释还支持如下几个域:

  •   serialize:设置是否序列化该属性
  •   deserialize:设置是否反序列化该属性。
  •   format:设置用于格式化输出、解析日期表单域的格式。例如”yyyy-MM-dd'T'HH:mm:ss”。
//使用注释语法来改变该属性序列化后的属性名  

@JSON(name="newName")
 public String getName()
 {
  return this.name;
 }

需要引入 import org.apache.struts2.json.annotations.JSON;

@JSON(serialize=false)
public User getUser() {
  return this.User;
}

@JSON(format="yyyy-MM-dd")
public Date getStartDate() {
  return this.startDate;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# struts2  # json  # 循环引用  # struts返回json数据  # js数组循环遍历数组内所有元素的方法  # JS数组的遍历方式for循环与for...in  # js 数组的for循环到底应该怎么写?  # javaScript如何跳出多重循环break、continue  # js和jquery中循环的退出和继续下一个循环  # JavaScript中循环遍历Array与Map的方法小结  # js for终止循环 跳出多层循环  # 如何检测JavaScript中的死循环示例详解  # 序列化  # 是一个  # 的是  # 几个  # 是在  # 中有  # 而我  # 与此  # 正则表达式  # 不做  # 则可  # 表单  # 命名为  # 可以达到  # 需要注意  # 大家多多  # 实现了  # 拦截器  # method  # default 


相关文章: 建站之星图片链接生成指南:自助建站与智能设计教程  如何高效完成自助建站业务培训?  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  如何快速完成中国万网建站详细流程?  linux top下的 minerd 木马清除方法  网站制作软件免费下载安装,有哪些免费下载的软件网站?  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  如何在Golang中引入测试模块_Golang测试包导入与使用实践  网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?  建站之星备案是否影响网站上线时间?  如何通过主机屋免费建站教程十分钟搭建网站?  网站制作公司,橙子建站是合法的吗?  建站之星伪静态规则如何正确配置?  c# 在高并发场景下,委托和接口调用的性能对比  如何在新浪SAE免费搭建个人博客?  建站主机服务器选购指南:轻量应用与VPS配置解析  如何在宝塔面板中修改默认建站目录?  高性价比服务器租赁——企业级配置与24小时运维服务  如何在景安服务器上快速搭建个人网站?  seo网站制作优化,网站SEO优化步骤有哪些?  高端云建站费用究竟需要多少预算?  如何确认建站备案号应放置的具体位置?  建站之星ASP如何实现CMS高效搭建与安全管理?  如何通过IIS搭建网站并配置访问权限?  建站之星官网登录失败?如何快速解决?  网站专业制作公司有哪些,做一个公司网站要多少钱?  制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?  如何正确选择百度移动适配建站域名?  javascript中的try catch异常捕获机制用法分析  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  如何优化Golang Web性能_Golang HTTP服务器性能提升方法  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  高端建站如何打造兼具美学与转化的品牌官网?  如何构建满足综合性能需求的优质建站方案?  如何选择建站程序?包含哪些必备功能与类型?  红河网站制作公司,红河事业单位身份证如何上传?  代购小票制作网站有哪些,购物小票的简要说明?  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  如何用5美元大硬盘VPS安全高效搭建个人网站?  如何将凡科建站内容保存为本地文件?  如何通过多用户协作模板快速搭建高效企业网站?  如何选择可靠的免备案建站服务器?  建站ABC备案流程中有哪些关键注意事项?  如何选择靠谱的建站公司加盟品牌?  c++ stringstream用法详解_c++字符串与数字转换利器  如何获取免费开源的自助建站系统源码?  建站主机与虚拟主机有何区别?如何选择最优方案?  如何选择适配移动端的WAP自助建站平台?  C++时间戳转换成日期时间的步骤和示例代码  建站之星微信建站一键生成小程序+多端营销系统 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。