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版本。
如果包未全部导入,也会报出找不到action的错误。
而json-default配置文件在struts2-json-plugin-2.1.8.1.jar包里的struts-plugin中有定义
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>
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_TIMEOUT
- private String message ; // 显示信息
- private String navTabId; //div的id ,可不填
- private String forwardUrl ; //要跳转的页面或Action
- private String callbackType ; //选择交互后模式,关闭当前页模式:Json4DWZ.CALLBACK_TYPE_FORWARD,
- // 跳转模式: Json4DWZ.CALLBACK_TYPE_FORWARD
- @Resource
- private 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;
- }
文章来自:http://blog.youkuaiyun.com/wj_myth/article/details/6900658