java重定向带参数_急 求助重新封装重定向带参数问题
該樓層疑似違規(guī)已被系統(tǒng)折疊?隱藏此樓查看此樓
這是我寫的代碼 不知道行不行 求助
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-----------");
// 標(biāo)識請求是否已經(jīng)在該方法內(nèi)完成處理
mavContainer.setRequestHandled(true);
// 得到request與response對象
HttpServletRequest request = webRequest.getNativeRequest(HttpServletRequest.class);
HttpServletResponse response = webRequest.getNativeResponse(HttpServletResponse.class);
// 得到返回的結(jié)果
Result result = (Result) returnValue; // 獲取方法上的注解
ResultMapping resultTypeAnnotation = returnType.getMethodAnnotation(ResultMapping.class);
// 返回的默認(rèn)url
String redirectUrl = resultTypeAnnotation.defaultUrl();
if(result.getUrl() != null && !"".equals(result.getUrl())){
redirectUrl = result.getUrl();
}
try {
HashMap hashMap = new HashMap();
//如果發(fā)現(xiàn)異常
if (result.getCode() == -1) {
hashMap.put("code", result.getCode());
hashMap.put("msg", "發(fā)生錯(cuò)誤:" + result.getMsg());
hashMap.put("expMsg", result.getExpMsg());
//出錯(cuò)做轉(zhuǎn)發(fā)
redirectUrl = ERROR_WEB_PAGE;
request.setAttribute("model", hashMap);
request.getRequestDispatcher(redirectUrl).forward(request, response);
return;
}
//取得參數(shù)
String parameterName = returnType.getParameterName();
//設(shè)置進(jìn)去
mavContainer.addAttribute(parameterName);
//重定向
response.sendRedirect(redirectUrl);
} catch (Exception ex) {
logger.error("RedirectResultHandler發(fā)生錯(cuò)誤:{}",ex.getMessage());
HashMap hashMap = new HashMap();
hashMap.put("code", "-1");
hashMap.put("msg", "RedirectResultHandler轉(zhuǎn)換器發(fā)生錯(cuò)誤:" + ex.getMessage());
hashMap.put("expMsg", ex.getMessage());
request.setAttribute("model", hashMap);
//出錯(cuò)做轉(zhuǎn)發(fā)
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());
}
}
總結(jié)
以上是生活随笔為你收集整理的java重定向带参数_急 求助重新封装重定向带参数问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java网络编程udp_java网络编程
- 下一篇: safari java插件故障_safa