struts2返回JSON的几种方式

2017-02-21  本文已影响0人  晚上吃火锅吗

struts2要返回JSON,需要在Action中定义该变量,如data1,然后定义该变量的get、set方法。

第一种方式

将Action中定义了get方法的变量全部返回,注意package必须extends= "json-default",对应的struts.xml如下:

<package name="default" extends="struts-default,json-default">
    <action name="dataMap" class="action.testAction" method="initData">
        <result name="dataMap" type="json"></result>
    </action>
</package>

testAction如下:

private Map<String,Object> dataMap;
public String initData() throws JSONException{
    dataMap = new HashMap<String, Object>();  
        User user = new User();  
        user.setUname("张三");  
        user.setUpassword("123");  
        dataMap.put("user", user);  
        // 放入一个是否操作成功的标识  
        dataMap.put("success", true);
        return "dataMap";       
}
public Map<String, Object> getDataMap() {  
        return dataMap;  
}

前端的js请求代码如下:

$("#b1").click(function(){
    $.post({
        url:'dataMap',
        data:"{}",
        datatype:'json',
        success:function(data){
            console.log(data);
        }
    })
})

这种方法不好的地方是会将Action中所有具有get方法的变量都返回回去,比如在testAction中又定义了变量data2,如果想不返回data2,则需要给getData2加上注解

//设置data2属性不作为json的内容返回 
@JSON(serialize=false)  
    public String getData2() {  
        return data2;  
    }

第二种方式

如果想根据不同的请求返回相应的值,使用另一种方法,struts.xml如下

<action name="dataMap" class="action.testAction" method="tests">  
        <result name="dataMap" type="json">    
            <param name="root">dataMap</param>  
        </result>  
</action>

只会返回<param name="root">变量</param>中定义的变量

上一篇下一篇

猜你喜欢

热点阅读