struts2整合json使用

来源:互联网 发布:淘宝行业数据 编辑:程序博客网 时间:2024/05/17 09:14

1、首先在SSH包的基础上,另外再导入commons-beanutils.jar、ezmorph-1.0.5.jar、json-lib-2.1-jdk15.jar、struts2-json-plugin-2.1.8.1.jar四个包,我用的是是struts是2.1.8.1版本。

2、在struts的配置文件上,action的包要继承json-default,即由原来的struts-defualt改为json-default

<package name="oparation" namespace="/operation" extends="json-default">    <!-- action -->        <action name="macroInfoAction_*" class="macroInfoAction" method="{1}">        <result type="json"/> <result name="list">/WEB-INF/jsp/operation/macroInfoAction/list.jsp</result>        <result name="addUI">/WEB-INF/jsp/operation/macroInfoAction/saveUI.jsp</result>        <result name="editUI">/WEB-INF/jsp/operation/macroInfoAction/saveUI.jsp</result>               </action>            </package>
而json-default配置文件在struts2-json-plugin-2.1.8.1.jar包里的struts-plugin中有定义

result中,要使用json的,设置type为json,如果没设置name,则默认为”SUCCESS“

3、配置完后,就可以在action中使用了,如:

public class MacroInfoAction extends OperationBaseAction<MacroInfo> {/*异步交互信息  {"statusCode":"200", "message":"操作成功", "navTabId":"navNewsLi", "forwardUrl":"", "callbackType":"closeCurrent"}*/private  int statusCode ;// 状态码,成功:Json4DWZ.STATUS_CODE_OK,//    错误:Json4DWZ.STATUS_CODE_ERROR,//    超时:Json4DWZ.STATUS_CODE_TIMEOUTprivate String message ;// 显示信息private String navTabId;//div的id ,可不填private String forwardUrl ;//要跳转的页面或Actionprivate String callbackType ;//选择交互后模式,关闭当前页模式:Json4DWZ.CALLBACK_TYPE_FORWARD,//  跳转模式: Json4DWZ.CALLBACK_TYPE_FORWARD@Resourceprivate MacroInfoService macroInfoService;/**列表*/public String list(){return "list";}/**删除*/public String delete(){macroInfoService.delete(model.getId());//删除statusCode = Json4DWZ.STATUS_CODE_OK;message =  "删除操作成功";navTabId = "macroInfoAction_list";forwardUrl = "operation/macroInfoAction_list.action?pageNum"+pageNum+"&numPerPage"+numPerPage;callbackType  = Json4DWZ.CALLBACK_TYPE_FORWARD;return SUCCESS;}/**添加页面*/public String addUI(){return "addUI";}/**添加*/public String add(){macroInfoService.save(model);statusCode = Json4DWZ.STATUS_CODE_OK;message =  "添加操作成功";navTabId = "macroInfoAction_list";forwardUrl = "operation/macroInfoAction_list.action?pageNum"+pageNum+"&numPerPage"+numPerPage;callbackType  = Json4DWZ.CALLBACK_TYPE_FORWARD;return SUCCESS;}/**修改页面*/public String editUI(){//准备回显数据MacroInfo macroInfo = macroInfoService.getById(model.getId());ActionContext.getContext().getValueStack().push(macroInfo);return "editUI";}/**修改*/public String edit(){//1、从数据库中获取源对象MacroInfo macroInfo = macroInfoService.getById(model.getId());//2、修改要修改的属性macroInfo.setAgeing(model.getAgeing());macroInfo.setCategory(model.getCategory());macroInfo.setApplyTo(model.getApplyTo());macroInfo.setContent(model.getContent());macroInfo.setName(model.getName());macroInfo.setPosttime(model.getPosttime());macroInfo.setRelation2us(model.getRelation2us());//3、更新到数据库中macroInfoService.update(macroInfo);statusCode = 200;message =  "修改操作成功";//navTabId = "main";forwardUrl = "operation/macroInfoAction_list.action";callbackType  = Json4DWZ.CALLBACK_TYPE_FORWARD;return SUCCESS;}//=======================================public int getStatusCode() {return statusCode;}public void setStatusCode(int statusCode) {this.statusCode = statusCode;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}public String getNavTabId() {return navTabId;}public void setNavTabId(String navTabId) {this.navTabId = navTabId;}public String getForwardUrl() {return forwardUrl;}public void setForwardUrl(String forwardUrl) {this.forwardUrl = forwardUrl;}public String getCallbackType() {return callbackType;}public void setCallbackType(String callbackType) {this.callbackType = callbackType;}}



类里定义的成员变量,有get方法的,都会自动封装为JSON格式,如果不想封装某个成员变量,则在它的get方法上加@JSON(serialize=false),如下:

@JSON(serialize=false)public String getCallbackType() {return callbackType;}







原创粉丝点击