`
Clayz
  • 浏览: 297635 次
  • 性别: Icon_minigender_1
  • 来自: 东京
社区版块
存档分类
最新评论

Struts2 Jsonplugin 详解

阅读更多

本文转自: http://www.blogjava.net/fuhoujun/archive/2008/10/04/232324.html


Apache提供的一个插件包,可以把 Action中的数据以 JSON做个封装然后返回。

它会将整个 action中的变量转化为 JSON数据 (根对象在 JSON中数据添加一个 ”root”标识 )。如果要使用它, Action必须遵循以下几点:

  • 返回的页面类型中 ”content-type”必须是 ”application/json”.(这个已经 Internet Community采用 ).
  • JSON内容必须是符合格式要求的 .
  • Action field必须有 public set方法 .(是不是没有 set方法就不会将 field添加到 JSON数据中,有待验证 ).
  • 它支持的类型有 : 基本类型 (int,long...String), Date, List, Map, Primitive Arrays, 其它 class, 对象数组 .
  • JSON中任何的 Object会被封装在 list map中,数据会被封装程 Long,如果是含有的数据则会被封装程 Double,数组会被封装程 List.

下面给出 JSON的数据格式:

{
    "doubleValue": 10.10,
    "nestedBean": { "name": "Mr Bean" },
    "list": ["A", 10, 20.20, { "firstName": "El Zorro" }],
    "array": [10, 20]
}

 

这个插件支持以下几个注释 :

 

注释名

简介

默认值

序列化

反序列化

name

配置 JSON name

empty

yes

no

serialize

serialization

true

yes

no

deserialize

deserialization

true

no

yes

format

格式化 Date 字段

"yyyy-MM-dd'T'HH:mm:ss"

yes

yes

 

可以通过配置来显示指出要放在 JSON field,其中有个自己的验证规则需要研究 .

<!-- Result fragment -->
<result type="json">
    <param name="excludeProperties">
        login.password,
        studentList.*".sin
    </param>
</result>

<!-- Interceptor fragment -->
<interceptor-ref name="json">
    <param name="enableSMD">true</param>
    <param name="excludeProperties">
        login.password,
        studentList.*".sin
    </param>
</interceptor-ref>

 

根对象

<result type="json">
    <param name="root">
        person.job
    </param>
</result>

 

也可以使用拦截器配置操作父对象

<interceptor-ref name="json">
    <param name="root">bean1.bean2</param>
</interceptor-ref>

 

JSON数据用注释封装

如果 wrapWithComments 设置为 true( 默认值为 false) ,则生成的 JSON 数据会变成这样

/* {
    "doubleVal": 10.10,
    "nestedBean": { "name": "Mr Bean" },
    "list": ["A", 10, 20.20, { "firstName": "El Zorro" }],
    "array": [10, 20]
} */

 

这样做可以避免 js中一些潜在的风险,使用时需要 :Var responseObject = eval("("+data.substring(data.indexOf(""/"*")+2, data.lastIndexOf(""*"/"))+")");

 

父类

“root”对象中父类的 field不会(会?) 默认存放到 JSON数据中,如果不想这样做,需要在配置时指定 ignoreHierarchy false:

<result type="json">
    <param name="ignoreHierarchy">false</param>
</result>

 

枚举类型

默认处理枚举类型时,会被处理成 JSON数据中 name等于枚举中 value value等于枚举中 name.

public enum AnEnum {
    ValueA,
    ValueB
}

 

JSON: "myEnum":"ValueA"

 

如果在处理枚举类型时,在 xml中配置了 enumAsBean,则会被当作一个 Bean处理,在 JSON数据中会有一个特别的属性 ”_name”值为 name().这个枚举中的所有属性都会被处理 .

public enum AnEnum {
    ValueA("A"),
    ValueB("B");

    private String val;

    public AnEnum(val) {
        this.val = val;
    }

    public getVal() {
       return val;
    }
}

 

JSON: myEnum: { "_name": "ValueA", "val": "A" }

 

Xml中配置 :

<result type="json">
    <param name="enumAsBean">true</param>
</result>

 

分享到:
评论

相关推荐

    Struts2_Jsonplugin_详解.doc

    Struts2 JSON插件是用于增强Struts2框架对AJAX和JSON支持的一个插件。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它使得客户端和服务器之间的数据交换变得更加简单。在Struts2中,JSON插件提供...

    Jsonplugin结合struts2使用说明

    在提供的文档《Struts2_Jsonplugin_详解.doc》和《JsonPlugin 使用.docx》中,你应该能找到更具体的使用示例和详细配置信息。这些文档可能涵盖了如何处理集合类型、自定义类型转换器、错误处理以及与其他Struts2功能...

    struts2的json插件配置详解(附demo)

    为了方便ajax调用传输数据,在struts2中加入的json插件用来做对象的序列化和反序列化,json插件的下载地址 http://code.google.com/p/jsonplugin/ 1. 下载json插件包,将jar包拷贝到WEB-INF/lib目录 注:struts2...

    struts2_json_jquery_集成详解.docx

    2. **引入依赖**:添加struts2的核心库、JSON插件(jsonplugin.jar)、Struts2-Spring插件、Hibernate库、Spring库、JDBC驱动以及jQuery库。 3. **数据库设计**:创建合适的数据库表并能够在MyEclipse中管理。 4. **...

    struts2整合JSON

    ### Struts2整合JSON知识点详解 #### 一、概述 在现代Web开发中,JSON(JavaScript Object Notation)因其轻量级的数据交换格式而被广泛采用。Struts2作为Java Web开发中的一个重要框架,能够方便地与JSON进行整合...

    spring、struts、ibatis框架搭建流程

    ### Spring、Struts、iBatis框架搭建流程详解 #### 一、框架下载与准备 在构建基于Spring、Struts和iBatis的项目时,首先需要下载这些框架的最新版本,并进行相应的准备工作。 ##### 1. Struts2框架 Struts2是一...

    ibatis 一个简单的项目详解

    - **Struts2核心及插件**:struts2-core-2.0.11.2.jar、struts2-spring-plugin-2.0.11.2.jar - **XWork核心库**:xwork-2.0.5.jar - **其他工具类**:classes12.jar、ognl-2.6.11.jar ##### 3. 编写实体Bean 实体...

    JSON Plugin.pdf

    ### JSON Plugin知识点详解 #### 一、JSON简介与特点 **JSON**(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛应用于Web应用程序中。它具有以下特点: 1. **易读性**:JSON数据格式简洁清晰,...

    SSI 增删改查

    ### SSI 增删改查:Java框架下的数据操作详解 #### 一、SSI与Spring、Struts结合实现增删改查 在Java开发领域,尤其是Web应用开发中,SSI(Server Side Include)通常指的是服务器端包含技术,但在本文档的上下...

Global site tag (gtag.js) - Google Analytics