struts2整合json使用

来源:互联网 发布:爱知日语怎么样 编辑:程序博客网 时间:2024/05/18 02:25

COME FROM

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

[html] view plaincopy
  1. <package name="oparation" namespace="/operation" extends="json-default">  
  2.         <!-- action -->  
  3.         <action name="macroInfoAction_*" class="macroInfoAction" method="{1}">  
  4.             <result type="json"/>  
  5.         <result name="list">/WEB-INF/jsp/operation/macroInfoAction/list.jsp</result>          
  6.         <result name="addUI">/WEB-INF/jsp/operation/macroInfoAction/saveUI.jsp</result>           
  7.         <result name="editUI">/WEB-INF/jsp/operation/macroInfoAction/saveUI.jsp</result>          
  8.         </action>  
  9.           
  10.     </package>  
而json-default配置文件在struts2-json-plugin-2.1.8.1.jar包里的struts-plugin中有定义

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

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

[java] view plaincopy
  1. public class MacroInfoAction extends OperationBaseAction<MacroInfo> {  
  2.       
  3.     /*异步交互信息 
  4.       {"statusCode":"200", "message":"操作成功",  
  5.             "navTabId":"navNewsLi", "forwardUrl":"", "callbackType":"closeCurrent"} 
  6.     */  
  7.     private  int statusCode ;   // 状态码,成功:Json4DWZ.STATUS_CODE_OK,  
  8.                                 //          错误:Json4DWZ.STATUS_CODE_ERROR,  
  9.                                 //          超时:Json4DWZ.STATUS_CODE_TIMEOUT  
  10.     private String message ;    // 显示信息  
  11.     private String navTabId;    //div的id ,可不填  
  12.     private String forwardUrl ; //要跳转的页面或Action  
  13.     private String callbackType ;   //选择交互后模式,关闭当前页模式:Json4DWZ.CALLBACK_TYPE_FORWARD,  
  14.                                     //                跳转模式: Json4DWZ.CALLBACK_TYPE_FORWARD  
  15.   
  16.     @Resource  
  17.     private MacroInfoService macroInfoService;  
  18.       
  19.     /**列表*/  
  20.     public String list(){  
  21.         return "list";  
  22.     }  
  23.     /**删除*/  
  24.     public String delete(){  
  25.         macroInfoService.delete(model.getId());//删除  
  26.         statusCode = Json4DWZ.STATUS_CODE_OK;  
  27.         message =  "删除操作成功";  
  28.         navTabId = "macroInfoAction_list";  
  29.         forwardUrl = "operation/macroInfoAction_list.action?pageNum"+pageNum+"&numPerPage"+numPerPage;  
  30.         callbackType  = Json4DWZ.CALLBACK_TYPE_FORWARD;  
  31.         return SUCCESS;  
  32.     }  
  33.     /**添加页面*/  
  34.     public String addUI(){  
  35.         return "addUI";  
  36.     }  
  37.     /**添加*/  
  38.     public String add(){  
  39.         macroInfoService.save(model);  
  40.         statusCode = Json4DWZ.STATUS_CODE_OK;  
  41.         message =  "添加操作成功";  
  42.         navTabId = "macroInfoAction_list";  
  43.         forwardUrl = "operation/macroInfoAction_list.action?pageNum"+pageNum+"&numPerPage"+numPerPage;  
  44.         callbackType  = Json4DWZ.CALLBACK_TYPE_FORWARD;  
  45.         return SUCCESS;  
  46.     }  
  47.     /**修改页面*/  
  48.     public String editUI(){  
  49.         //准备回显数据  
  50.         MacroInfo macroInfo = macroInfoService.getById(model.getId());  
  51.         ActionContext.getContext().getValueStack().push(macroInfo);  
  52.         return "editUI";  
  53.     }  
  54.     /**修改*/  
  55.     public String edit(){  
  56.         //1、从数据库中获取源对象  
  57.         MacroInfo macroInfo = macroInfoService.getById(model.getId());  
  58.         //2、修改要修改的属性  
  59.         macroInfo.setAgeing(model.getAgeing());  
  60.         macroInfo.setCategory(model.getCategory());  
  61.         macroInfo.setApplyTo(model.getApplyTo());  
  62.         macroInfo.setContent(model.getContent());  
  63.         macroInfo.setName(model.getName());  
  64.         macroInfo.setPosttime(model.getPosttime());  
  65.         macroInfo.setRelation2us(model.getRelation2us());  
  66.         //3、更新到数据库中  
  67.         macroInfoService.update(macroInfo);  
  68.         statusCode = 200;  
  69.         message =  "修改操作成功";  
  70.         //navTabId = "main";  
  71.         forwardUrl = "operation/macroInfoAction_list.action";  
  72.         callbackType  = Json4DWZ.CALLBACK_TYPE_FORWARD;  
  73.         return SUCCESS;  
  74.     }  
  75.     //=======================================  
  76.     public int getStatusCode() {  
  77.         return statusCode;  
  78.     }  
  79.   
  80.     public void setStatusCode(int statusCode) {  
  81.         this.statusCode = statusCode;  
  82.     }  
  83.   
  84.     public String getMessage() {  
  85.         return message;  
  86.     }  
  87.   
  88.     public void setMessage(String message) {  
  89.         this.message = message;  
  90.     }  
  91.   
  92.     public String getNavTabId() {  
  93.         return navTabId;  
  94.     }  
  95.   
  96.     public void setNavTabId(String navTabId) {  
  97.         this.navTabId = navTabId;  
  98.     }  
  99.   
  100.     public String getForwardUrl() {  
  101.         return forwardUrl;  
  102.     }  
  103.   
  104.     public void setForwardUrl(String forwardUrl) {  
  105.         this.forwardUrl = forwardUrl;  
  106.     }  
  107.   
  108.     public String getCallbackType() {  
  109.         return callbackType;  
  110.     }  
  111.   
  112.     public void setCallbackType(String callbackType) {  
  113.         this.callbackType = callbackType;  
  114.     }  
  115.       
  116. }  



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

[java] view plaincopy
  1. @JSON(serialize=false)  
  2. public String getCallbackType() {  
  3.         return callbackType;  
  4.     }  
0 0
原创粉丝点击