`
wxinpeng
  • 浏览: 590779 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

Struts2 中 Hibernate 关联类 JSON 序列化

阅读更多

 通过ajax 的方式请求 action 。返回type='json'的result 。此时不需要物理视图。

但返回的JSON格式的值会将Action类中的所有的属性全部遍历序列化。即转换成{属性:值}的格式返回给回调函数。

 

有些Action类中的属性我们并不想序列化。

 

解决方案:在返回类型为json的Result 中配置 子元素的属性 includeProperties(白名单)  或 excludeProperties(黑名单)

<result name="gradejson" type="json">
	<param name="includeProperties">
		status
	</param>
</result>

 上面配置是基本数据类型的属性。如果返回的数据类型是集合类型。则应如下配置。(list的类型为List)

<result name="clazzjson" type="json">
	<param name="includeProperties">
		list.*
	</param>			
</result>

  如果返回的值中的类与别的类有关联关系。

JSON序列化会以无穷举得方式将所有有关联的对象数据全部抓取。
解决方案:@JSON  注解。
public class Clazz implements Serializable {
	private static final long serialVersionUID = -2403727636192220253L;
	private int id;
	private Grade grade;//
	private String clazzName;//
	private String clazzInfo;//
	private int count;
	private Date createDate;//
	private transient Set<Student>students;//
	
	@JSON(serialize=false)
	public Grade getGrade() {
		return grade;
	}
	public void setGrade(Grade grade) {
		this.grade = grade;
	}
	public String getClazzName() {
		return clazzName;
	}
	public void setClazzName(String clazzName) {
		this.clazzName = clazzName;
	}
	@JSON(serialize=false)
	public Set<Student> getStudents() {
		return students;
	}
	public void setStudents(Set<Student> students) {
		this.students = students;
	}
	
}
 将@JSON(serialize=false)
配置在不想序列化的关联属性的getter方法。JSON序列化就会忽略这些属性。
分享到:
评论
1 楼 zhengqxtom 2011-09-06  
假设action中有个Clazz 类
我想用ajax方式提交json数据
Clazz 的grade如何赋值呢?

相关推荐

    关于struts2和hibernate的部分注解解释

    - **@JsonIgnore**:用于在进行JSON序列化时忽略特定属性。 - **@Id**:标记一个实体类中的主键字段。每个实体类只能有一个字段被标记为`@Id`。 - **@GeneratedValue**:用于指定主键的生成策略。 - **strategy*...

    ExtJs + Struts2 + JSON 程序总结

    它是ExtJs与Struts2之间数据传输的理想选择,因为JSON数据可以直接被JavaScript对象表示,无需额外的序列化和反序列化步骤。 在给定的例子中,为了实现数据交互,首先定义了Hibernate映射文件(ORDER.XML 和 CUSTOM...

    Struts+Spring+Hibernate+Ajax的Demo

    DWR处理了JSON或XML的序列化和反序列化,简化了跨域通信问题。 **Dojo** 是一个JavaScript工具库,提供了丰富的UI组件、动画效果和数据绑定等功能,有助于创建交互式的Web应用。在这个Demo中,Dojo可能被用来创建...

    自己整合的一个ssh框架jar包(包含了json)

    这个"自己整合的一个ssh框架jar包(包含了json)"很可能已经将Struts2的JSON插件、Spring对JSON的支持以及Hibernate可能涉及的JSON序列化和反序列化功能集成在一起,以便于开发者在不需额外配置的情况下,实现JSON...

    Struts2+Hiberante+ajax+Mysql 三级联动

    整个过程涉及到了前端与后端的交互、数据库查询优化、以及JSON数据的序列化和反序列化等多个技术点。 总的来说,"Struts2+Hiberante+ajax+Mysql 三级联动"项目展示了如何利用这些技术进行高效的Web开发,特别是在...

    SSH+ExtJs分页小例子

    值得注意的是,代码中注释掉的部分原本是用于处理JSON序列化的,目的是在级联查询时排除不希望显示的关联对象(newstype)。在实际应用中,这可能会影响前端的数据显示,因此需要谨慎处理。 最后,我们看到代码片段...

    Java学习笔记-个人整理的

    {7.4}基本类型数据序列化}{108}{section.7.4} {7.5}String的序列化}{109}{section.7.5} {7.6}InputStream与OutputStream}{109}{section.7.6} {7.6.1}FileInputStream}{109}{subsection.7.6.1} {7.6.2}...

    DWR实现三级联动.pdf

    4. **DWR**将结果序列化为JSON格式,并发送回前端JavaScript。 5. **前端JavaScript**接收并处理返回的结果,更新UI。 #### 八、总结 本案例通过使用DWR实现了省市县三级联动的功能,涉及到了多个技术栈的集成应用...

    ajax请求返回的数据看不到回调函数没有执行也没报错

    这个注解指示JSON序列化时忽略这个集合,避免在客户端尝试解析空集合。如果确实需要在客户端使用这些关联数据,那么应当在Service层预先查询并填充这些数据,确保它们在返回给客户端时是完整的。 此外,对于其他...

    Java文件上传的代码.docx-综合文档

    12. **数据转换和序列化**:`JSONDeserializer`可能用于将接收到的JSON数据转换为Java对象,便于处理。 综上所述,这个Java代码涉及了文件上传的处理、业务逻辑的组织、数据库操作、依赖注入等多个方面,构成了一个...

Global site tag (gtag.js) - Google Analytics