java+重定向加参数_急 求助重新封装重定向带参数问题

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

这是我写的代码 不知道行不行 求助

package base.web.resolver.result;import java.util.HashMap;import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;import org.apache.logging.log4j.LogManager;

import org.apache.logging.log4j.Logger;

import org.springframework.core.MethodParameter;

import org.springframework.web.context.request.NativeWebRequest;

import org.springframework.web.method.support.HandlerMethodReturnValueHandler;

import org.springframework.web.method.support.ModelAndViewContainer;

import org.springframework.web.servlet.mvc.support.RedirectAttributes;import base.web.annotation.ResultMapping;

import base.web.annotation.ResultMapping.Type;

import base.web.model.Result;public class RedirectChainResultHandler extends BaseResultHandler implements HandlerMethodReturnValueHandler { private static final Logger logger = LogManager.getLogger(RedirectChainResultHandler.class);

@Override

public void handleReturnValue(Object returnValue,MethodParameter returnType, ModelAndViewContainer mavContainer,

NativeWebRequest webRequest ) throws Exception {

logger.info("-------------RedirectChainResultHandler resolver result-----------");

// 标识请求是否已经在该方法内完成处理

mavContainer.setRequestHandled(true);

// 得到request与response对象

HttpServletRequest request = webRequest.getNativeRequest(HttpServletRequest.class);

HttpServletResponse response = webRequest.getNativeResponse(HttpServletResponse.class);

// 得到返回的结果

Result result = (Result) returnValue; // 获取方法上的注解

ResultMapping resultTypeAnnotation = returnType.getMethodAnnotation(ResultMapping.class);

// 返回的默认url

String redirectUrl = resultTypeAnnotation.defaultUrl();

if(result.getUrl() != null && !"".equals(result.getUrl())){

redirectUrl = result.getUrl();

}

try {

HashMap hashMap = new HashMap();

//如果发现异常

if (result.getCode() == -1) {

hashMap.put("code", result.getCode());

hashMap.put("msg", "发生错误:" + result.getMsg());

hashMap.put("expMsg", result.getExpMsg());

//出错做转发

redirectUrl = ERROR_WEB_PAGE;

request.setAttribute("model", hashMap);

request.getRequestDispatcher(redirectUrl).forward(request, response);

return;

}

//取得参数

String parameterName = returnType.getParameterName();

//设置进去

mavContainer.addAttribute(parameterName);

//重定向

response.sendRedirect(redirectUrl);

} catch (Exception ex) {

logger.error("RedirectResultHandler发生错误:{}",ex.getMessage());

HashMap hashMap = new HashMap();

hashMap.put("code", "-1");

hashMap.put("msg", "RedirectResultHandler转换器发生错误:" + ex.getMessage());

hashMap.put("expMsg", ex.getMessage());

request.setAttribute("model", hashMap);

//出错做转发

redirectUrl = ERROR_WEB_PAGE;

request.setAttribute("model", hashMap);

request.getRequestDispatcher(redirectUrl).forward(request, response);

} finally {

}

} @Override

public boolean supportsReturnType(MethodParameter returnType) {

return returnType.getParameterType() == Result.class

&& returnType.getMethodAnnotation(ResultMapping.class) != null

&& returnType.getMethodAnnotation(ResultMapping.class).value().name().equals(Type.REDIRECT_CHAIN.name());

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值