struts2整合json使用

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_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;
	}







  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值