SpringMVC Redirect 跳转后如何保存 Model中的数据

囧芝麻 2013-08-22

在编码中经常会遇到这样一种情况,

就是在一些操作出错需要把错误信息返回到页面时恰恰却需要Redirect跳转

这时候就会出现我在这里
model.addAttribute("error","出错了!")

的值没有了,这种情况怎么做呢,

1.首先我们需要一个enum类用来保存所有错误提示

public enum EnumErrorInfo {
	ERROR("login-1", "登录错误1!"),
        ERROR2("login-2", "登录错误2!");
	
	private String desc;
	private String value;
	
	private EnumInfo(String value, String desc) {
		this.value = value;
		this.desc = desc;
	}

	public String getDesc() {
		return desc;
	}

	/**
	 * @return the value
	 */
	public String getValue() {
		return value;
	}
	
	public static EnumInfo getEnum(String type) {
		EnumInfo[] status = EnumInfo.values();
		for(int i = 0; i < status.length; i++) {
			if(status[i].getValue().equals(type) ) {
				return status[i];
			}
		}
		
		return null;
	}
	
}

2.在跳转时

model.addAttribute("code", EnumInfo.ERROR.getValue());
return "redirect:/account/login";

3.在跳转到的方法中获取

public void setAlert(request, m){
		 String code = request.getParameter("code");
		 if(code == null || "".equals(code))
			 return;
		 EnumErrorInfo e = EnumErrorInfo.getEnum(code); 
		 	if(e != null)
			 	model.addAttribute("error", e.getDesc()); 
	}

可以封装成方法调用,应该不止一出使用

4.在页面显示

<c:if test="${error!= null}"> 
					
						${error}
				
				</c:if>

相关推荐