zoukankan      html  css  js  c++  java
  • struts-json

    Struts2序列化的属性,该属性在action中必须有对应的getter方法

    如果action的属性很多,我们想要从Action返回到调用页面的数据。这个时候配置includeProperties或者 excludeProperties拦截器即可。而这2个拦截器的定义都在struts2的json-default包内,所以要使用该拦截器的包都要继承自json-default。

    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    <struts>
        <constant value="spring" name="struts.objectFactory" />
        <include file="struts-admin.xml"></include>
        <package name="default" extends="json-default">
            <action class="com.person.PersonAction" name="person" method="view">
                <result type="json">
                    <param name="includeProperties">person.name,persoon.age,person.gender </param>
                </result>
            </action>
        </package>
    </struts>


    经过测试,下面的设置也是可以的,就是在includeProperties里面直接写你所在Action的属性

    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    <struts>
        <constant value="spring" name="struts.objectFactory" />
        <include file="struts-admin.xml"></include>
        <package name="default" extends="json-default">
            <action class="com.person.PersonAction" name="person" method="view">
                <result type="json">
                    <param name="includeProperties">name,age,gender </param>
                </result>
            </action>
        </package>
    </struts>

    利用Struts 2的支持的可配置结果,可以达到过滤器的效果。Action的处理结果配置支持正则表达式。但是如果返回的对象是一个数组格式的Json数据。比如 peson Bean中有对象persion1…person9,而我只要JSON插件,则可以用如下的正则表达式。

    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    <struts>
        <constant value="spring" name="struts.objectFactory" />
        <include file="struts-admin.xml"></include>
        <package name="default" extends="json-default">
            <action class="com.person.PersonAction" name="person" method="view">
                <result type="json">
                    <param name="includeProperties">person.name,persoon.age,person.gender </param>
                </result>
            </action>
        </package>
    </struts>
    <!--利用Struts 2的支持的可配置结果,可以达到过滤器的效果。Action的处理结果配置支持正则表达式。 但是如果返回的对象是一个数组格式的Json数据。比如peson Bean中有对象persion1...person9,而我只要person1的json数据, 则可以用如下的正则表达式。 -->
    <struts>
        <constant value="spring" name="struts.objectFactory" />
        <include file="struts-admin.xml"></include>
        <package name="default" extends="json-default">
            <action class="com.person.PersonAction" name="person" method="view">
                <result type="json">
                    <param name="includeProperties">person[d+].person1 </param>
                </result>
            </action>
        </package>
    </struts>
    <!--excludeProperties拦截器的用法与此类同,如果拦截的仅仅是一个对象,如果拦截掉person Bean的整个对象。 -->
    <struts>
        <constant value="spring" name="struts.objectFactory" />
        <include file="struts-admin.xml"></include>
        <package name="default" extends="json-default">
            <action class="com.person.PersonAction" name="person" method="view">
                <result type="json">
                    <param name="excludeProperties">person </param>
                </result>
            </action>
        </package>
    </struts>

         传递List或者对象是,后面要加上  .*   代表全部的意思。

    <param name="includeProperties">topicList.*</param>  

    需要注意的是,如果用JSON插件把返回结果定为JSON。而JSON的原理是在ACTION中的get方法都会序列化,所以前面是get的方法只要没指定不序列化,都会执行,那么可以在该方法的前面加注解声明该方法不做序列化。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    @JSON(serialize = false)
    public User getUser() {
        return this.User;
    }
     
    @JSON(format = "yyyy-MM-dd")
    public Date getStartDate() {
        return this.startDate;
    }

     

  • 相关阅读:
    牌型种数|2015年蓝桥杯B组题解析第七题-fishers
    加法变乘法|2015年蓝桥杯B组题解析第六题-fishers
    九数组分数|2015年蓝桥杯B组题解析第五题-fishers
    [Oracle]Oracle学习小结(1)
    [Oracle]Oracle数据库任何用户密码都能以sysdba角色登入
    【oracle】Enterprise Manager 无法连接到数据库实例。下面列出了组件的状态---个人解决方案
    从两个字符串中找出最大公共子字符串
    Java学习小结(1)-数组的创建与传参
    php学习日志(5)-解决Windows Live Writer错误:WindowsLive.Writer.CoreServices.HttpRequestHelper的类型初始值设定发生异常
    php学习日志(4)-The mbstring extension is missing. Please check your PHP configuration错误及解决方法
  • 原文地址:https://www.cnblogs.com/ly-china/p/5467698.html
Copyright © 2011-2022 走看看