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>