亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? decoratingnavigationhandler.java

?? spring framework 2.5.4源代碼
?? JAVA
字號:
/*
 * Copyright 2002-2006 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.springframework.web.jsf;

import javax.faces.application.NavigationHandler;
import javax.faces.context.FacesContext;

/**
 * Base class for JSF NavigationHandler implementations that want
 * to be capable of decorating an original NavigationHandler.
 *
 * <p>Supports the standard JSF style of decoration (through a constructor argument)
 * as well as an overloaded <code>handleNavigation</code> method with explicit
 * NavigationHandler argument (passing in the original NavigationHandler). Subclasses
 * are forced to implement this overloaded <code>handleNavigation</code> method.
 * Standard JSF invocations will automatically delegate to the overloaded method,
 * with the constructor-injected NavigationHandler as argument.
 *
 * @author Juergen Hoeller
 * @since 1.2.7
 * @see DelegatingNavigationHandlerProxy
 */
public abstract class DecoratingNavigationHandler extends NavigationHandler {

	private NavigationHandler decoratedNavigationHandler;


	/**
	 * Create a DecoratingNavigationHandler without fixed original NavigationHandler.
	 */
	protected DecoratingNavigationHandler() {
	}

	/**
	 * Create a DecoratingNavigationHandler with fixed original NavigationHandler.
	 * @param originalNavigationHandler the original NavigationHandler to decorate
	 */
	protected DecoratingNavigationHandler(NavigationHandler originalNavigationHandler) {
		this.decoratedNavigationHandler = originalNavigationHandler;
	}

	/**
	 * Return the fixed original NavigationHandler decorated by this handler, if any
	 * (that is, if passed in through the constructor).
	 */
	public final NavigationHandler getDecoratedNavigationHandler() {
		return decoratedNavigationHandler;
	}


	/**
	 * This implementation of the standard JSF <code>handleNavigation</code> method
	 * delegates to the overloaded variant, passing in constructor-injected
	 * NavigationHandler as argument.
	 * @see #handleNavigation(javax.faces.context.FacesContext, String, String, javax.faces.application.NavigationHandler)
	 */
	public final void handleNavigation(FacesContext facesContext, String fromAction, String outcome) {
		handleNavigation(facesContext, fromAction, outcome, this.decoratedNavigationHandler);
	}

	/**
	 * Special <code>handleNavigation</code> variant with explicit NavigationHandler
	 * argument. Either called directly, by code with an explicit original handler,
	 * or called from the standard <code>handleNavigation</code> method, as
	 * plain JSF-defined NavigationHandler.
	 * <p>Implementations should invoke <code>callNextHandlerInChain</code> to
	 * delegate to the next handler in the chain. This will always call the most
	 * appropriate next handler (see <code>callNextHandlerInChain</code> javadoc).
	 * Alternatively, the decorated NavigationHandler or the passed-in original
	 * NavigationHandler can also be called directly; however, this is not as
	 * flexible in terms of reacting to potential positions in the chain.
	 * @param facesContext the current JSF context
	 * @param fromAction the action binding expression that was evaluated to retrieve the
	 * specified outcome, or <code>null</code> if the outcome was acquired by some other means
	 * @param outcome the logical outcome returned by a previous invoked application action
	 * (which may be <code>null</code>)
	 * @param originalNavigationHandler the original NavigationHandler,
	 * or <code>null</code> if none
	 * @see #callNextHandlerInChain
	 */
	public abstract void handleNavigation(
			FacesContext facesContext, String fromAction, String outcome, NavigationHandler originalNavigationHandler);


	/**
	 * Method to be called by subclasses when intending to delegate to the next
	 * handler in the NavigationHandler chain. Will always call the most
	 * appropriate next handler, either the decorated NavigationHandler passed
	 * in as constructor argument or the original NavigationHandler as passed
	 * into this method - according to the position of this instance in the chain.
	 * <p>Will call the decorated NavigationHandler specified as constructor
	 * argument, if any. In case of a DecoratingNavigationHandler as target, the
	 * original NavigationHandler as passed into this method will be passed on to
	 * the next element in the chain: This ensures propagation of the original
	 * handler that the last element in the handler chain might delegate back to.
	 * In case of a standard NavigationHandler as target, the original handler
	 * will simply not get passed on; no delegating back to the original is
	 * possible further down the chain in that scenario.
	 * <p>If no decorated NavigationHandler specified as constructor argument,
	 * this instance is the last element in the chain. Hence, this method will
	 * call the original NavigationHandler as passed into this method. If no
	 * original NavigantionHandler has been passed in (for example if this
	 * instance is the last element in a chain with standard NavigationHandlers
	 * as earlier elements), this method corresponds to a no-op.
	 * @param facesContext the current JSF context
	 * @param fromAction the action binding expression that was evaluated to retrieve the
	 * specified outcome, or <code>null</code> if the outcome was acquired by some other means
	 * @param outcome the logical outcome returned by a previous invoked application action
	 * (which may be <code>null</code>)
	 * @param originalNavigationHandler the original NavigationHandler,
	 * or <code>null</code> if none
	 */
	protected final void callNextHandlerInChain(
			FacesContext facesContext, String fromAction, String outcome, NavigationHandler originalNavigationHandler) {

		NavigationHandler decoratedNavigationHandler = getDecoratedNavigationHandler();

		if (decoratedNavigationHandler instanceof DecoratingNavigationHandler) {
			// DecoratingNavigationHandler specified through constructor argument:
			// Call it with original NavigationHandler passed in.
			DecoratingNavigationHandler decHandler = (DecoratingNavigationHandler) decoratedNavigationHandler;
			decHandler.handleNavigation(facesContext, fromAction, outcome, originalNavigationHandler);
		}
		else if (decoratedNavigationHandler != null) {
			// Standard NavigationHandler specified through constructor argument:
			// Call it through standard API, without original NavigationHandler passed in.
			// The called handler will not be able to redirect to the original handler.
			decoratedNavigationHandler.handleNavigation(facesContext, fromAction, outcome);
		}
		else if (originalNavigationHandler != null) {
			// No NavigationHandler specified through constructor argument:
			// Call original handler, marking the end of this chain.
			originalNavigationHandler.handleNavigation(facesContext, fromAction, outcome);
		}
	}

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩视频免费观看高清完整版在线观看 | 国产99精品视频| 日日骚欧美日韩| 午夜视频一区在线观看| 青青草原综合久久大伊人精品优势| 日本精品免费观看高清观看| 欧美系列一区二区| 亚洲国产va精品久久久不卡综合| 美女一区二区久久| 91丨九色porny丨蝌蚪| 国产欧美日韩综合| 亚洲欧美色图小说| 激情综合五月婷婷| 69堂亚洲精品首页| 日韩av电影一区| 国产精品女主播在线观看| 日韩美女精品在线| 粗大黑人巨茎大战欧美成人| 国产亚洲一二三区| 北条麻妃一区二区三区| 亚洲欧美综合色| 日韩欧美高清在线| 成人激情免费视频| 久久精品在线免费观看| 成人美女视频在线观看| 亚洲欧美日韩一区二区| 国产成人99久久亚洲综合精品| 国产精品人人做人人爽人人添| 成人禁用看黄a在线| 精品一区二区三区久久| 中文字幕免费不卡| 91免费版在线| 亚洲欧美另类在线| 3d动漫精品啪啪| 美国三级日本三级久久99| 国产欧美日韩精品一区| 欧美日韩精品系列| 亚洲成在线观看| 国产精品久久久久久久久晋中 | 国产精品麻豆视频| 久久91精品国产91久久小草| 亚洲欧美福利一区二区| 日韩一级大片在线观看| 波多野结衣亚洲| 狠狠狠色丁香婷婷综合激情 | 国产91清纯白嫩初高中在线观看| 亚洲色欲色欲www| 亚洲欧美一区二区三区国产精品| 亚洲视频一区在线| 欧美激情一区二区三区在线| 久久精品水蜜桃av综合天堂| 国产亚洲欧洲997久久综合| 一本色道a无线码一区v| 成人高清免费观看| 成人ar影院免费观看视频| 日韩电影网1区2区| 日本一区中文字幕| 国产一区二区三区视频在线播放| 一级精品视频在线观看宜春院| 一区二区三区四区精品在线视频| 亚洲男人的天堂在线aⅴ视频| 国产欧美日韩综合| 又紧又大又爽精品一区二区| 亚洲精品亚洲人成人网在线播放| 亚洲图片欧美色图| 一本大道av一区二区在线播放| 不卡一区二区三区四区| 欧美日韩在线播放一区| 911精品国产一区二区在线| 日韩欧美国产精品一区| 亚洲国产精品人人做人人爽| 久久国产乱子精品免费女| 日韩av一二三| 激情综合色综合久久| 久久9热精品视频| 国产成都精品91一区二区三| 麻豆精品一区二区| 久久夜色精品国产噜噜av | 亚洲成人精品在线观看| 久久不见久久见免费视频1| 91麻豆免费看片| 亚洲一区二区三区影院| 成人激情综合网站| 欧美福利电影网| 亚洲婷婷综合久久一本伊一区| 日韩一区在线播放| 亚洲欧美色一区| www.成人在线| 国产精品国产三级国产普通话蜜臀| 欧美一区二区三区在线电影 | 久久99精品久久久久久动态图| 99久精品国产| 国产精品123| 一区二区三区久久| 色综合天天综合色综合av| 国产欧美日本一区视频| 日产国产欧美视频一区精品| 5858s免费视频成人| 国产激情一区二区三区| 亚洲一线二线三线视频| 欧美精品亚洲一区二区在线播放| 精品亚洲国产成人av制服丝袜| 精品视频一区 二区 三区| 国产综合色精品一区二区三区| 日韩一区二区三区三四区视频在线观看| 国产精品久久三| 欧美日韩一区高清| 国产suv一区二区三区88区| 久久久一区二区| 亚洲日本va在线观看| 欧美三级中文字| 精品国产麻豆免费人成网站| 欧美裸体一区二区三区| 韩国v欧美v亚洲v日本v| 一区二区三区精品在线| 精品国产一区二区国模嫣然| 国产成人免费视频网站| 亚洲一级电影视频| 91精品国产入口| 精品国产青草久久久久福利| 亚洲视频一二三| 国产视频一区二区在线| 制服.丝袜.亚洲.另类.中文| 日本韩国欧美一区二区三区| av一二三不卡影片| 国产一区91精品张津瑜| 亚洲视频 欧洲视频| 亚洲视频香蕉人妖| 亚洲午夜私人影院| 亚洲欧洲日韩在线| 欧美www视频| 欧亚一区二区三区| 一区二区三区欧美日韩| 欧美三片在线视频观看| 国产99精品在线观看| av中文字幕在线不卡| 国产在线一区二区综合免费视频| 国产乱码精品一区二区三区av | 成人黄色网址在线观看| 蜜臂av日日欢夜夜爽一区| 亚洲激情图片一区| 亚洲国产精品尤物yw在线观看| 婷婷一区二区三区| 日本一区二区综合亚洲| 国产麻豆视频一区| 午夜a成v人精品| 国产精品香蕉一区二区三区| 国产精品一区不卡| 色综合久久88色综合天天免费| 色偷偷88欧美精品久久久| 欧美精品一卡二卡| 欧美一区二区精品| 五月婷婷激情综合| 一区二区高清视频在线观看| 亚州成人在线电影| 2021久久国产精品不只是精品| 激情小说亚洲一区| 懂色av一区二区夜夜嗨| 在线不卡一区二区| 亚洲国产精品精华液ab| 天堂成人免费av电影一区| 国产精品综合一区二区三区| 日韩视频在线你懂得| 亚洲国产另类av| 欧美美女网站色| 国产精品91一区二区| 欧美丰满美乳xxx高潮www| 国产福利一区二区三区视频 | 欧美一级电影网站| 久热成人在线视频| 日韩亚洲欧美中文三级| 日本三级亚洲精品| 亚洲人吸女人奶水| 国产精品伊人色| 国产精品第一页第二页第三页| 国产精品18久久久久久久网站| 精品久久99ma| 午夜久久久影院| 日韩美女啊v在线免费观看| 国产麻豆精品在线| 亚洲视频一区二区在线| 色综合久久综合| 久久99精品国产麻豆不卡| 欧美电视剧免费观看| www.视频一区| 中文字幕亚洲精品在线观看| 欧美亚洲一区三区| 国产一本一道久久香蕉| 一区二区三区在线免费视频| 欧美日韩亚洲不卡| 国产一区二区看久久| 2020国产成人综合网| 成人动漫av在线| 奇米四色…亚洲| 亚洲欧美电影一区二区| 欧美日韩国产bt| 国产成人午夜视频| 国内外成人在线视频| 亚洲午夜三级在线| 最新国产の精品合集bt伙计|