全网整合营销服务商

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

免费咨询热线: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 


相关文章: 制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  制作国外网站的软件,国外有哪些比较优质的网站推荐?  相册网站制作软件,图片上的网址怎么复制?  制作网站的模板软件,网站怎么建设?  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  Bpmn 2.0的XML文件怎么画流程图  ,交易猫的商品怎么发布到网站上去?  如何用已有域名快速搭建网站?  建站之星如何快速更换网站模板?  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  实例解析Array和String方法  建站之星导航配置指南:自助建站与SEO优化全解析  高端智能建站公司优选:品牌定制与SEO优化一站式服务  网站好制作吗知乎,网站开发好学吗?有什么技巧?  如何在建站宝盒中设置产品搜索功能?  建站之星在线客服如何快速接入解答?  如何在Golang中引入测试模块_Golang测试包导入与使用实践  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  广州营销型建站服务商推荐:技术优势与SEO优化解析  安云自助建站系统如何快速提升SEO排名?  洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?  高端建站三要素:定制模板、企业官网与响应式设计优化  c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】  如何通过二级域名建站提升品牌影响力?  黑客如何通过漏洞一步步攻陷网站服务器?  网站微信制作软件,如何制作微信链接?  建站之星代理如何优化在线客服效率?  高性能网站服务器配置指南:安全稳定与高效建站核心方案  定制建站策划方案_专业建站与网站建设方案一站式指南  唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?  如何通过免费商城建站系统源码自定义网站主题与功能?  简单实现Android验证码  如何正确选择百度移动适配建站域名?  网站制作公司排行榜,四大门户网站排名?  如何选择高性价比服务器搭建个人网站?  制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?  成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?  利用JavaScript实现拖拽改变元素大小  如何快速查询网址的建站时间与历史轨迹?  如何批量查询域名的建站时间记录?  建站主机选哪种环境更利于SEO优化?  企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?  ,巨量百应是干嘛的?  微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  建站三合一如何选?哪家性价比更高?  装修招标网站设计制作流程,装修招标流程?  制作农业网站的软件,比较好的农业网站推荐一下?  大连网站制作公司哪家好一点,大连买房网站哪个好?  个人网站制作流程图片大全,个人网站如何注销?  如何在IIS中配置站点IP、端口及主机头? 

您的项目需求

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