美文网首页
struts2返回JSON的几种方式

struts2返回JSON的几种方式

作者: 晚上吃火锅吗 | 来源:发表于2017-02-21 14:52 被阅读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>中定义的变量

    相关文章

      网友评论

          本文标题:struts2返回JSON的几种方式

          本文链接:https://www.haomeiwen.com/subject/czcuwttx.html