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

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

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());

}

}

java重定向带参数_急 求助重新封装重定向带参数问题相关推荐

  1. java redirect 跨域_如何解决跨域重定向携带参数的问题?不使用将参数拼接在重定向url末尾的方式...

    如何解决跨域重定向携带参数的问题?不使用将参数拼接在重定向url末尾的方式 需求,项目A在服务器A上,需要重定向到服务器B上项目B,并且需要携带参数,参数对用户不可见,所以不可以将参数拼接在重定向ur ...

  2. 新代系统反向间隙参数_如何调试新代系统SYNTEC参数

    新代系统SYNTEC参数调试步骤: 1. 参数修改 :第一页面按显示屏下最右或左边按键,出现"参数设定"按键,找到要改的参数,需要输入密码时,输入参数密码"520&quo ...

  3. 新代系统反向间隙参数_新代系统SYNTEC:调试参数 nbsp;- 加工中心

    2017年5月19日 新代系统SYNTEC:调试参数  - 加工中心 三 . 新代系统SYNTEC: 1. 参数修改 :第一页面按显示屏下最右或左边按键,出现"参数设定"按键,找到 ...

  4. python 函数调用 不允许关键字参数_你所不知道的Python|函数参数的演进之路

    原标题:你所不知道的Python|函数参数的演进之路 函数参数处理机制是Python中一个非常重要的知识点,随着Python的演进,参数处理机制的灵活性和丰富性也在不断增加,使得我们不仅可以写出简化的 ...

  5. ssrs 级联参数_在SSRS中使用多值参数

    ssrs 级联参数 This article covers the usage and detailed features of the multi-value parameter in SSRS. ...

  6. 南方h5手簿求转换参数_如何使用RTK手簿求坐标转换参数(四参数/七参数)

    参数计算是用于两个坐标系统之间的转换关系,GPS 接收机输出的数据是CGCS2000经纬度坐标,但是有些时候根据甲方的要求,需要转化到施工测量坐标,这个时候就需要软件进行坐标转换参数的计算和设置,而转 ...

  7. c语言全局变量作为参数_在C / C ++中使用变量参数列表

    c语言全局变量作为参数 C/C++ provides a means to pass a variable number of arguments to a function.  This artic ...

  8. 8145v5 参数_【DCM-07】Random Parameter(随机参数)Logit模型及其Nlogit实现

    本文是本专栏系列的第7篇原创文章,将详细介绍随机参数Logit模型,并利用Nlogit软件进行实操演示.本文公式较多,建议电脑端享用. [需要数据和完整代码的可以关注我的微信公众号,自动获取,可以搜索 ...

  9. java中jsp怎么传递参数_急!Java问题,Java如何获得jsp传递的参数??

    我的jsp页面:while(rs.next()){%> "target="_blank"> 我的jsp页面: while (rs.next()) { %> ...

最新文章

  1. linux驱动:TI+DM8127+GPIO(四)之设备
  2. Transformer也能生成图像
  3. HDU - 3613 Best Reward(字符串哈希)
  4. $$watcher when is it filled
  5. Linux网络编程服务器模型选择之IO复用循环并发服务器
  6. Google上面关于cas的文章
  7. [转载]用c写PHP的扩展接口(php5,c++)
  8. 一周学好python_耗时一周整理的Python资料,包含各阶段所需网站、项目,收藏了?慢慢来...
  9. String 源码解析
  10. go语言如何调用java接口,[译] 如何在 Go 中使用接口
  11. 解决java poi海量数据导出内存溢出问题
  12. 虚拟化技术发展编年史
  13. C++中vector的访问和赋值
  14. 南京装修公司排名十大口碑排行榜(教你如何选择)
  15. 高质量web前端后台模板
  16. java 进制转换类_Java基本数据类型以及进制转换
  17. 从阿里、华为、海尔的崛起看:财务生产力可以有多强
  18. [leetcode]1438. 绝对差不超过限制的最长连续子数组
  19. 3D MAX 安装中的一些问题 一直初始化、闪退
  20. ubuntu合并终端_如何在Ubuntu中安装多个终端以及更改默认终端

热门文章

  1. iOS - APP任意push新页面那些事
  2. Android学习路线
  3. java学习路线图(2018年最新版)
  4. Centos 内存占满 释放内存
  5. 编译安装linux内核步骤
  6. dll的概念、dll导出类(转)
  7. 别得意,你只是假装收藏了而已
  8. sql server 查看对象最后修改时间
  9. git github 快速入门
  10. Python图片处理PIL/pillow/生成验证码/出现KeyError: 和The _imagingft C module is not installed...