struts2使用json插件返回json字符串只有模型驱动对象中的值

web开发现在最流行使用Json字符串进行数据交互,从原来的的Jsp转向了前后端分离,struts2框架也提供了这种Json格式,接收ajax请求。推荐使用Json插件的方式。但是在使用的时候出现了一点小问题
使用json插件,会自动将Action中的属性转化成json对象返回给请求方,如果同时使用模型驱动的方式接收参数,这个时候返回结果的时候就只有模型对象,没有自己想要返回的值

——解决方案:
**对返回的结果增加一个属性
dataMap
**
dataMap是在Action中的属性,最好定义为json对象。设置

<param name="excludeProperties">
list\[\d+\]\.name
</param>


<param name="includeProperties">
list\[\d+\]\.name
</param>

都会自动在json对象去过滤属性


——–代码
Action:

public class PluginJsonAction2 extends ActionSupport implements ModelDriven<User> {
    private User user = new User();//用户传递的参数
    private JSONObject dataMap = new JSONObject();//返回的参数

    @Override
    public String execute() throws Exception {
        List<User> list = new ArrayList();
        String msg = "访问成功";
        list.add(new User("张三",18));
        list.add(new User("李四",20));
        dataMap.put("msg",msg);
        dataMap.put("list",list);
        System.out.println(user);
        return SUCCESS;
    }
    public JSONObject getDataMap() {
        return dataMap;
    }
    @Override
    public User getModel() {
        return user;
    }
}

struts.xml 配置文件

    <package name="pluginJson" namespace="/" extends="json-default">
        <action name="pluginJsonAction" class="cpf.zzc.ajax.PluginJsonAction" method="execute">
            <result name="success" type="json"></result>
        </action>
        <action name="pluginJsonAction2" class="cpf.zzc.ajax.PluginJsonAction2" method="execute">
            <result name="success" type="json">
                <param name="root">
                    dataMap
                </param>
                <param name="excludeProperties">
                    list\[\d+\]\.name
                </param>
            </result>
        </action>
    </package>

猜你喜欢

转载自blog.csdn.net/caoPengFlying/article/details/81231890