日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > php開源 > php教程 > springMVC源碼分析--ViewNameMethodReturnValueHandler返回值處理器(三)

springMVC源碼分析--ViewNameMethodReturnValueHandler返回值處理器(三)

來源:程序員人生   發(fā)布時間:2017-02-22 09:02:48 閱讀次數(shù):4259次

之前兩篇博客springMVC源碼分析--HandlerMethodReturnValueHandler返回值解析器(1)和 springMVC源碼分析--HandlerMethodReturnValueHandlerComposite返回值解析器集合(2)我們分別介紹了返回值處理器相干的東西,接下來我們選取1個簡單的實現(xiàn)類ViewNameMethodReturnValueHandler來簡單介紹1下返回值處理操作。


1、返回值為jsp頁面地址

    @RequestMapping(value = "input")
    public String inputProduct() {
        logger.info("inputProduct called");
        return "jsp/ProductForm";  //對應jsp頁面名稱
    }

2、ViewNameMethodReturnValueHandler中對返回值jsp/ProductForm的處理


實現(xiàn)代碼以下:

@Override
	public void handleReturnValue(Object returnValue, MethodParameter returnType,
			ModelAndViewContainer mavContainer, NativeWebRequest webRequest) throws Exception {
		//判斷是不是是String類型
		if (returnValue instanceof CharSequence) {
			//如果是將其設置為視圖名稱
			String viewName = returnValue.toString();
			mavContainer.setViewName(viewName);
			if (isRedirectViewName(viewName)) {
				mavContainer.setRedirectModelScenario(true);
			}
		}
		else if (returnValue != null){
			// should not happen
			throw new UnsupportedOperationException("Unexpected return type: " +
					returnType.getParameterType().getName() + " in method: " + returnType.getMethod());
		}
	}

這樣就把返回值jsp/ProductForm作為視圖名稱放到ModelAndView中,這樣就完成了返回值的處理操作。

ViewNameMethodReturnValueHandler完全源碼以下,處理機制還是比較簡單的。

//HandlerMethodReturnValueHandler的子類,主要就是Controller履行后返回的視圖名稱
public class ViewNameMethodReturnValueHandler implements HandlerMethodReturnValueHandler {

	private String[] redirectPatterns;

	//設置跳轉(zhuǎn)鏈接的匹配方式
	public void setRedirectPatterns(String... redirectPatterns) {
		this.redirectPatterns = redirectPatterns;
	}

	/**
	 * The configured redirect patterns, if any.
	 */
	public String[] getRedirectPatterns() {
		return this.redirectPatterns;
	}

	@Override
	public boolean supportsReturnType(MethodParameter returnType) {
		Class<?> paramType = returnType.getParameterType();
		return (void.class == paramType || CharSequence.class.isAssignableFrom(paramType));
	}
	//實現(xiàn)邏輯還是比較簡單的,就是設置ModelAndViewContainer的viewName視圖名稱
	@Override
	public void handleReturnValue(Object returnValue, MethodParameter returnType,
			ModelAndViewContainer mavContainer, NativeWebRequest webRequest) throws Exception {

		if (returnValue instanceof CharSequence) {
			String viewName = returnValue.toString();
			mavContainer.setViewName(viewName);
			if (isRedirectViewName(viewName)) {
				mavContainer.setRedirectModelScenario(true);
			}
		}
		else if (returnValue != null){
			// should not happen
			throw new UnsupportedOperationException("Unexpected return type: " +
					returnType.getParameterType().getName() + " in method: " + returnType.getMethod());
		}
	}
	//判斷返回值是不是是跳轉(zhuǎn)鏈接,以redirect:開頭
	protected boolean isRedirectViewName(String viewName) {
		return (PatternMatchUtils.simpleMatch(this.redirectPatterns, viewName) || viewName.startsWith("redirect:"));
	}

}



生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 精品美女久久久久久免费 | 欧美视频区 | 污污的视频网站 | 91久久久久久久久久久久久 | 在线观看av网站 | www.天堂av.com | 女同久久另类99精品国产 | 国产精品成人自拍 | 寡妇一级毛片视频 | 久热这里只有 | 久草av在线播放 | 日韩精品一二 | 九九视频网 | 久久久精 | 成人h动漫精品一区二区器材 | 精品视频免费观看 | 国产精品久久久久国产a级 亚洲天堂偷拍 | 日韩精品在线看 | 成人国产精品免费观看 | 欧美日韩国产色综合视频 | 狠狠干2024| 国产精品精品久久久 | 99精品国产成人一区二区 | 久久国产视频播放 | 亚洲成年| 伦一理一级一a一片 | 日韩福利在线 | 日韩特黄电影 | a爱视频 | 久久久久久久国产 | 一区二区三区 在线 | 亚洲va欧美va人人爽成人影院 | 国产一区二区毛片 | 欧美日韩激情在线一区二区三区 | 91蜜桃婷婷狠狠久久综合9色 | 亚洲精品爱爱 | 久久精品欧美 | 国产一区二区视频免费观看 | 色网站免费 | 性高湖久久久久久久久 | 亚洲精品在线观看免费 |