origo

          origo

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            15 Posts :: 0 Stories :: 13 Comments :: 0 Trackbacks

          原文地址:http://code.javaeye.com/blog/247023

          在Faces API中有兩個(gè)類是要經(jīng)常使用的. 一個(gè)是FacesContext 一個(gè)是ExternalContext.首先講解如何使用FacesContext .
          對每個(gè)JSF請求,F(xiàn)acesServlet對象都會(huì)為其獲取一個(gè)javax.faces. context.
          FacesContext類的實(shí)例。FacesServlet對象將下列3個(gè)取自Web容器的對象傳給javax.faces.context.FacesContextFactory對象的getFacesContext方法,以此來做到這一點(diǎn):
          ●       javax.servlet.ServletContext
          ●       javax.servlet.ServletRequest
          ●       javax.servlet.ServletResponse
          這意味著FacesContext的實(shí)例里包含了所有處理JSF請求所需的每個(gè)請求的狀態(tài)信息。圖3-1展示了FacesContext實(shí)例里封裝的其他一些對象。
          3.2.1 獲取當(dāng)前實(shí)例
          一個(gè)經(jīng)常用到的方法是靜態(tài)的getCurrentInstance方法,它返回當(dāng)前的FacesContext實(shí)例。此方法的簽名如下:
          public static FacesContext getCurrentInstance()
          下面的代碼是一個(gè)用此方法獲取FacesContext當(dāng)前實(shí)例的例子:
          FacesContext facesContext = FacesContext.getCurrentInstance();
          3.2.2 獲取和修改組件樹
          FacesContext實(shí)例里最重要的內(nèi)容是請求頁面的組件樹。組件樹是由javax.faces.tree.Tree類來表示的(本章后面的“使用Tree類”一節(jié)會(huì)討論)。FacesContext實(shí)例的tree屬性就是Tree對象。
          要獲取或修改Tree對象,可使用tree屬性的讀取方法和賦值方法:
          public abstract Tree getTree()
          public abstract void setTree(Tree tree)
          3.2.3 添加和獲取消息
          在 請求處理生命周期里,可能會(huì)遇到錯(cuò)誤。比如,當(dāng)驗(yàn)證器執(zhí)行輸入驗(yàn)證時(shí),因?yàn)橛脩糨斎肓瞬徽_的值,驗(yàn)證可能失?。划?dāng)組件試圖把輸入值轉(zhuǎn)換為綁定到組件的模 型對象所需的類型時(shí),也可能會(huì)失敗。所有消息都必須存放到FacesContext實(shí)例里以備后面進(jìn)行處理。比如,您可能希望在頁面里顯示錯(cuò)誤消息,從而 為用戶更正錯(cuò)誤提供幫助。
          錯(cuò)誤消息是由javax.faces.application.Message接口(第11章再詳細(xì)討論)來表示的,您可以通過使用FacesContext類的addMessage方法向FacesContext實(shí)例里添加Message對象。這個(gè)方法的簽名如下:
          public abstract void addMessage(UIComponent component, Message message)
          如果component不為空,新加入的message就關(guān)聯(lián)到component上。否則,它就不與任何特定組件的實(shí)例相關(guān)。
          舉例來說,驗(yàn)證器在驗(yàn)證組件值失敗時(shí)可調(diào)用FacesContext的addMessage方法,傳入值無效的組件及一個(gè)包含特定錯(cuò)誤消息的Message對象。
          所有添加到FacesContext實(shí)例的Message對象都被加入到一個(gè)集合里。可通過調(diào)用getMessages方法的兩個(gè)重載方法之一來獲取加入的Message對象:
          public abstract Iterator getMessages()
          public abstract Iterator getMessages(UIComponent component)
          第一種形式的調(diào)用在一個(gè)Iterator里返回所有Message對象,而第二種形式的調(diào)用則僅返回與給定UIComponent相關(guān)聯(lián)的Message對象。
          3.2.4 添加和獲取請求處理事件
          UIComponent 可以生成FacesEvent對象。比如,當(dāng)單擊一個(gè)UICommand組件時(shí),它會(huì)生成一個(gè)ActionEvent對象(ActionEvent類是 FacesEvent類的子類)。這個(gè)FacesEvent對象需要在FacesContext實(shí)例里保存起來,以備請求處理生命周期里的下一步處理事件 時(shí)所用。
          可通過使用FacesContext類的addFacesEvent方法向FacesContext實(shí)例添加FacesEvent對象。此方法的簽名如下:
          public abstract void addFacesEvent(FacesEvent event)
          要提取先前添加的FacesEvent對象,可調(diào)用getFacesEvents方法,其簽名如下:
          public abstract Iterator getFacesEvents()
          此方法返回FacesEvent時(shí)的順序與其在隊(duì)列中的順序一致。
          3.2.5 向Response對象里寫入信息
          為 了向Response對象里寫入信息,F(xiàn)acesContext類提供了兩個(gè)屬性,一個(gè)是 javax.faces.Context.ResponseStream類型,另一個(gè)是 javax.faces.context.ResponseWriter類型。ResponseStream類型的對象用于輸出二進(jìn)制數(shù)據(jù),而 ResponseWriter類型的對象則用于輸出字符。這些屬性的讀取方法和賦值方法如下:
          public abstract ResponseStream getResponseStream()
          public abstract void setResponseStream(ResponseStream responseStream)
          public abstract ResponseWriter getResponseWriter()
          public abstract void setResponseWriter(ResponseWriter responseWriter)
          3.2.6 獲取和設(shè)置地區(qū)
          第11章將會(huì)討論到,JSF支持國際化和本地化。這意味著您可以根據(jù)用戶的地區(qū)決定發(fā)送什么樣的回應(yīng)信息。locale屬性里存放了當(dāng)前處理中所用的Locale對象。
          初始狀況下,locale屬性的值和網(wǎng)絡(luò)瀏覽器里指定的地區(qū)是一樣的,但可以修改這個(gè)值,從而發(fā)送輸出所使用的地區(qū)將獨(dú)立于瀏覽器所使用的地區(qū)。此屬性的讀取方法和賦值方法如下:
          public abstract Locale getLocale()
          public abstract void setLocale(Locale locale)
          3.2.7 操作請求處理生命周期
          FacesContext類還提供了兩個(gè)方法與請求處理生命周期進(jìn)行交互:
          ●       在當(dāng)前階段的處理完成后,調(diào)用renderResponse方法通知JSF實(shí)現(xiàn)把控制權(quán)轉(zhuǎn)到呈現(xiàn)響應(yīng)階段。也就是說,處于當(dāng)前階段和呈現(xiàn)響應(yīng)階段之間的所有其他階段都不再執(zhí)行。
          ●       調(diào)用responseComplete方法,告訴JSF實(shí)現(xiàn)此次請求的HTTP響應(yīng)已經(jīng)完成(比如在使用了HTTP重定向的情況下)。因此,當(dāng)前階段完成后,必須中止請求處理生命周期的處理。
          這些方法的簽名如下:
          public abstract void renderResponse()
          public abstract void responseComplete()
          3.2.8 獲取其他請求狀態(tài)信息
          其他每個(gè)請求的狀態(tài)信息封裝在ExternalContext對象里,可以使用getExternalContext方法獲取該對象:
          public abstract ExternalContext getExternalContext()
          現(xiàn)在講解ExternalContext。
          使 用ExternalContext類提供的方法可以獲取ServletContext、ServletRequest和ServletResponse對 象,構(gòu)造FacesContext實(shí)例時(shí)需要這些對象。除此之外,ExternalContext實(shí)例提供了包裝器方法,可以使用這些方法獲得原來需要從 ServletContext、ServletRequest及ServletResponse對象上調(diào)用一些方法獲得的信息。
          3.3.1 獲取ServletContext、ServletRequest和ServletResponse對象
          可使用下列方法獲取servlet信息:
          ●       getContext 此方法可獲取Web應(yīng)用中與當(dāng)前請求相關(guān)聯(lián)的ServletContext對象。其簽名如下:
          public abstract Object getContext()
          ●      getRequest 此方法可獲取代表當(dāng)前正在處理的請求的ServletRequest對象。其簽名如下:
          public abstract Object getRequest()
          ●       getResponse 此方法可獲取代表當(dāng)前正在呈現(xiàn)的響應(yīng)的ServletResponse對象。其簽名如下:
          public abstract Object getResponse()
          這些方法都是返回一個(gè)java.lang.Object對象,不是servlet特有的類型,這樣就可以使JSF實(shí)現(xiàn)獨(dú)立于其運(yùn)行的環(huán)境。比如,JSF既可用于Web容器,也可以用于其他容器,如portlet等。
          3.3.2 獲取ServletContext特性
          getApplicationMap方法返回一個(gè)包含ServletContext對象里全部特性名/值對的Map對象。下面是此方法的簽名:
          public abstract java.util.Map getApplication()
          作為一個(gè)例子,下面的代碼可獲取一個(gè)名叫databaseUtility的特性:
          Object contextAttribute = null;
          FacesContext facesContext = FacesContext.getCurrentInstance();
          ExternalContext externalContext = facesContext.getExternalContext();
          Map contextMap = externalContext.getApplicationMap();
          if (contextMap!=null)
          contextAttribute = contextMap.get("databaseUtility");
          3.3.3 獲取Session對象及其特性
          通 過ExternalContext對象可訪問與當(dāng)前請求相關(guān)聯(lián)的Session對象。getSession方法可取回當(dāng)前用戶的 javax.servlet.http.HttpSession對象,如果當(dāng)前用戶沒有相應(yīng)的Session對象,此方法的行為由傳入的參數(shù)決定:如果為 該方法傳入了一個(gè)true值,它會(huì)創(chuàng)建一個(gè)Session對象;否則,它會(huì)返回null。下面是getSession方法的簽名:
          public abstract Object getSession(boolean create)
          此方法其實(shí)是javax.servlet.http.HttpServletRequest接口中g(shù)etSession方法的包裝器。
          getSessionMap方法返回一個(gè)包含與當(dāng)前請求相關(guān)聯(lián)的Session對象里所有特性名/值對的Map對象。下面是它的方法簽名:
          public abstract java.util.getSessionMap()
          要 獲取Session對象里的特性,可調(diào)用Map類的get方法,傳入要獲取的特性名即可。文檔中沒有指明在當(dāng)前請求沒有相應(yīng)Session對象的情況下, 此方法是返回null還是一個(gè)空的Map對象。所以在調(diào)用Map的get方法之前,需要先檢查Map是否為null。下面的代碼是獲取Session特性 的例子:
          Object sessionAttribute = null;
          FacesContext facesContext = FacesContext.getCurrentInstance();
          ExternalContext externalContext = facesContext.getExternalContext();
          Map sessionMap = externalContext.getSessionMap();
          if (sessionMap!=null)
          sessionAttribute = sessionMap.get(key);
          最后一行的key是一個(gè)包含特性名的字符串。
          3.3.4 獲取ServletContext對象的初始參數(shù)
          getInitParameter方法是ServletContext對象的getInitParameter方法的包裝器,用這個(gè)方法可以提取在部署描述符(web.xml文件)里用context-init元素指定的初始參數(shù)值。此方法的簽名如下:
          public abstract String getInitParameter(String parameterName)
          舉例來說,如果在部署描述符聲明了如下context-init元素:
          <context-param>
          <param-name>contactPerson</param-name>
          <param-value>Scott Jobim</param-value>
          </context-param>
          下面代碼中的字符串變量initParam的值會(huì)是Scott Jobim。
          FacesContext facesContext = FacesContext.getCurrentInstance();
          ExternalContext externalContext = facesContext.getExternalContext();
          String initParam = externalContext.getInitParameter("contactPerson");
          getInitParameterMap方法返回一個(gè)包含ServletContext對象中全部初始參數(shù)的Map對象。其簽名如下:
          public abstract java.util.Map getInitParameterMap()
          為了獲取一個(gè)初始參數(shù)的值,使用Map對象的get方法,同時(shí)傳遞初始參數(shù)的名稱。比如,下面的代碼把初始參數(shù)databaseName的值輸出到控制臺(tái)。
          FacesContext facesContext = FacesContext.getCurrentInstance();
          ExternalContext externalContext = facesContext.getExternalContext();
          Map paramMap = externalContext.getInitParameterMap();
          if (paramMap!=null) {
          System.out.println(paramMap.get("databaseName"));
          }
          3.3.5 獲取Request對象的特性
          getRequestMap方法返回一個(gè)包含當(dāng)前Request對象中全部特性名/值對的Map對象。其方法簽名如下:
          public abstract java.util.Map getRequestMap()
          作為一個(gè)例子,下面的代碼可用來提取Request對象里的特性:
          Object requestAttribute = null;
          FacesContext facesContext = FacesContext.getCurrentInstance();
          ExternalContext externalContext = facesContext.getExternalContext();
          Map requestMap = externalContext.getRequestMap();
          if (requestMap!=null)
          requestAttribute = requestMap.get(key);
          最后一行里的Key是一個(gè)包含要提取的屬性名的字符串。
          3.3.6 訪問Request對象里的參數(shù)名和值
          getRequestParameterMap、getRequestParameterNames和getRequestParameterValuesMap方法可用來訪問Request對象里的參數(shù)名和值。
          getRequestParameterMap返回一個(gè)包含Request對象里全部參數(shù)名/值對的Map對象。其簽名如下:
          public abstract java.util.Map getRequestParameterMap()
          作為一個(gè)例子,下面的代碼可用來提取名為id的請求參數(shù)的值:
          String id = null;
          FacesContext facesContext = FacesContext.getCurrentInstance();
          ExternalContext externalContext = facesContext.getExternalContext();
          Map requestParameterMap = externalContext.getRequestParameterMap();
          if (requestParameterMap!=null)
          id = (String) requestParameterMap.get("id");
          getRequestParameterNames 方法返回一個(gè)包含全部請求參數(shù)名的Iterator。此方法其實(shí)是ServletRequest.getParameterNames方法的包裝器。不同 的是,ExternalContext類的getRequestParameterNames返回一個(gè)Iterator,而不是 java.util.Enumeration。此方法的簽名如下:
          public abstract java.util.Iterator getRequestParameterNames()
          作為一個(gè)例子,下面的代碼把所有的請求參數(shù)名/值對輸出到控制臺(tái)。
          FacesContext facesContext = FacesContext.getCurrentInstance();
          ExternalContext externalContext = facesContext.getExternalContext();
          Map requestParameterMap = externalContext.getRequestParameterMap();
          Iterator parameterNames = externalContext.getRequestParameterNames();
          while (parameterNames.hasNext()) {
          String parameterName = (String) parameterNames.next();
          String parameterValue =
          (String) requestParameterMap.get(parameterName);
          System.out.println(parameterName + " : " + parameterValue);
          }
          getRequestParameterValuesMap 方法返回一個(gè)包含Request對象里全部參數(shù)名/值對的Map對象。此方法與getRequestParameterMap方法很相似,但 getRequestParameterValuesMap可返回全部相同參數(shù)名的值。在此方法返回的Map對象上調(diào)用get(key)方法,這一點(diǎn)等同 于獲取當(dāng)前請求的ServletRequest并在其上調(diào)用getParameterValues(key)。也就是說,Map對象返回的是一個(gè)字符串?dāng)?shù) 組。GetRequestParameterValuesMap方法的簽名如下:
          public abstract java.util.Map getRequestParameterValuesMap()
          下面例子中的代碼把請求參數(shù)id的全部值輸出到控制臺(tái)。
          String[] id = null;
          FacesContext facesContext = FacesContext.getCurrentInstance();
          ExternalContext externalContext = facesContext.getExternalContext();
          Map requestParameterValuesMap = externalContext.getRequestParameterValuesMap();
          if (requestParameterValuesMap!=null) {
          id = (String[]) requestParameterValuesMap.get("id");
          // print all values of id
          for (int i=0; i<id.length; i++) {
          System.out.println(id[i]);
          }
          }
          3.3.7 獲取請求頭的名和值
          getRequestHeaderMap方法返回一個(gè)包含當(dāng)前請求中全部頭名/值對的Map對象。其方法簽名如下:
          public abstract java.util.Map getRequestHeaderMap()
          舉個(gè)例子來說,下面的代碼提取host頭的值:
          String host = null;
          FacesContext facesContext = FacesContext.getCurrentInstance();
          ExternalContext externalContext = facesContext.getExternalContext();
          Map headerMap = externalContext.getRequestHeaderMap();
          if (headerMap!=null) {
          host = (String) headerMap.get("host");
          System.out.println(host);
          }
          注意:
          報(bào)頭的名稱是不區(qū)分大小寫的。比如,對getRequestHeaderMap返回的Map對象分別用host、Host和Host作為參數(shù)來調(diào)用get方法,其結(jié)果是一樣的。
          getRequestHeaderValuesMap方法與getRequestHeaderMap方法相似。但在getRequestHeader
          ValuesMap方法返回的Map對象上調(diào)用get方法會(huì)得到一個(gè)字符串的數(shù)組。getRequestHeaderValuesMap方法的簽名如下:
          public abstract java.util.Map getRequestHeaderValuesMap()
          在getRequestHeaderValuesMap方法返回的Map對象上調(diào)用get方法會(huì)返回一個(gè)java.util.Enumeration值。
          下面的代碼使用getRequestHeaderValuesMap方法來獲取一個(gè)包含全部頭名/值對的Map對象,然后在此Map對象上調(diào)用get方法以獲取全部Accept-Encoding頭的值,并將結(jié)果輸出到控制臺(tái)。
          FacesContext facesContext = FacesContext.getCurrentInstance();
          ExternalContext externalContext = facesContext.getExternalContext();
          Map headerValuesMap = externalContext.getRequestHeaderValuesMap();
          if (headerValuesMap!=null) {
          Enumeration headers =
          (Enumeration) headerValuesMap.get("Accept-Encoding");
          while (headers.hasMoreElements()) {
          String value = (String) headers.nextElement();
          System.out.println(value);
          }
          }
          3.3.8 獲取Cookie
          getRequestCookies方法是HttpServletRequest.getCookies方法的包裝器,它返回一個(gè)javax.servlet.http.Cookie對象的數(shù)組,數(shù)組中是當(dāng)前Request對象里的全部Cookie。此方法的簽名如下:
          public abstract Cookie[] getRequestCookies()
          例如,下面的代碼取得當(dāng)前請求中的全部Cookie對象,然后在結(jié)果數(shù)組上循環(huán),輸出全部Cookie的名和值。
          FacesContext facesContext = FacesContext.getCurrentInstance();
          ExternalContext externalContext = facesContext.getExternalContext();
          Cookie[] cookies = externalContext.getRequestCookies();
          for (int i=0; i<cookies.length; i++) {
          Cookie cookie = cookies[i];
          String cookieName = cookie.getName();
          String cookieValue = cookie.getValue();
          System.out.println(cookieName + " : " + cookieValue);
          }
          getRequestCookieMap 方法返回一個(gè)包含當(dāng)前請求中全部Cookie的、以Cookie的名稱作為鍵的Map對象。在此Map對象上調(diào)用get方法會(huì)返回一個(gè) javax.servlet.http.Cookie對象。GetRequestCookieMap方法的簽名如下:
          public abstract java.util.Map getRequestCookieMap()
          例如,下面的代碼取得名為password的Cookie對象并將其值輸出到控制臺(tái)。
          FacesContext facesContext = FacesContext.getCurrentInstance();
          ExternalContext externalContext = facesContext.getExternalContext();
          Map cookieMap = externalContext.getRequestCookieMap();
          if (cookieMap!=null) {
          Cookie cookie = (Cookie) cookieMap.get("password");
          if (cookie!=null)
          System.out.println("Value:" + cookie.getValue());
          }
          注意:
          Cookie名稱區(qū)分大小寫。
          3.3.9 獲取場所
          getRequestLocale方法是ServletRequest.getLocale方法的包裝器,它返回Request對象中的Locale對象。此方法的簽名如下:
          public abstract java.util.Locale getRequestLocale()
          例如,下面的代碼取回用戶的場所并輸出該場所的顯示語言和顯示國家。
          FacesContext facesContext = FacesContext.getCurrentInstance();
          ExternalContext externalContext = facesContext.getExternalContext();
          Locale locale = externalContext.getRequestLocale();
          System.out.println("Language:" + locale.getDisplayLanguage());
          System.out.println("Country:" + locale.getDisplayCountry());
          3.3.10 獲取上下文路徑
          getRequestContextPath是HttpServletRequest.getContextPath方法的包裝器,它返回請求URI中指明請求上下文的上下文路徑部分。其方法簽名如下:
          public abstract String getRequestContextPath()
          下面的代碼段把請求URI的上下文路徑輸出到控制臺(tái):
          FacesContext facesContext = FacesContext.getCurrentInstance();
          ExternalContext externalContext = facesContext.getExternalContext();
          System.out.println("Context path:" +
          externalContext.getRequestContextPath());
          對于URL http://localhost:8080/JSFCh03/faces/test.jsp來說,getRequestContextPath方法的返回值為/JSFCh03。
          getRequestPathInfo 方法是HttpServletRequest.getPathInfo方法的包裝器,它返回當(dāng)客戶端進(jìn)行請求時(shí)與客戶端發(fā)送的URL相關(guān)聯(lián)的額外路徑信 息。這部分信息跟在servlet路徑信息的后面,但在查詢字符串之前。getRequestPathInfo方法的簽名如下:
          public abstract String getRequestPathInfo()
          例如,下面代碼輸出請求URL的路徑信息。
          FacesContext facesContext = FacesContext.getCurrentInstance();
          ExternalContext externalContext = facesContext.getExternalContext();
          System.out.println("Path info:" +
          externalContext.getRequestPathInfo());
          對于URL http://localhost:8080/JSFCh03/faces/test.jsp而言,getRequestPathInfo方法的返回值為test.jsp。
          3.3.11 獲取資源路徑
          getResourcePaths 方法是ServletContext類的getResourcePaths方法的包裝器,它返回一個(gè)Set對象,其中包含Web應(yīng)用中最長子路徑與傳入的 路徑參數(shù)相匹配的資源路徑。表示子目錄的路徑以“/”結(jié)束。返回的路徑是相對于Web應(yīng)用根路徑的相對路徑,并以“/”開始。此方法的簽名如下:
          public abstract java.util.Set getResourcePaths(String path)
          比如,考慮如下代碼:
          FacesContext facesContext = FacesContext.getCurrentInstance();
          ExternalContext externalContext = facesContext.getExternalContext();
          Set resourcePaths = externalContext.getResourcePaths("/");
          Iterator iterator = resourcePaths.iterator();
          while (iterator.hasNext()) {
          String path = (String) iterator.next();
          System.out.println(path);
          }
          System.out.println("----------------------------");
          resourcePaths = externalContext.getResourcePaths("/WEB-INF");
          iterator = resourcePaths.iterator();
          while (iterator.hasNext()) {
          String path = (String) iterator.next();
          System.out.println(path);
          }
          這段代碼兩次調(diào)用了getResourcePaths方法,第一次傳入“/”,第二次傳入“/WEB-INF”。如果在一個(gè)目錄結(jié)構(gòu)如圖3-2所示的Web應(yīng)用里運(yùn)行以上代碼,則返回的第一個(gè)Set里包含如下路徑:
          /order.jsp
          /index.jsp
          /Styles.css
          /images/
          /details.jsp
          /WEB-INF/
          /checkOut.jsp
          /browse.jsp
          /shoppingCart.jsp
          /search.jsp
          /menu.jsp
          第二個(gè)Set里包含如下路徑:
          /WEB-INF/faces-config.xml
          /WEB-INF/web.xml
          /WEB-INF/classes/
          /WEB-INF/lib/

          圖3-2 測試getResourcesPath的目錄結(jié)構(gòu)
          getResourceAsStream方法是ServletContext.getResourceAsStream的包裝器,它返回指定路徑中作為java.io.InputStream對象的資源。其方法簽名如下:
          public abstract java.io.InputStream getResourceAsStream(String path)
          3.3.12 編碼URL
          encodeURL方法是HttpServletResponse.encodeURL方法的包裝器,它編碼給定的URL,其方法是加入會(huì)話的ID信息;或者,如果不需要這個(gè)步驟,則直接將給定的URL原封不動(dòng)地返回。其方法簽名如下:
          public abstract String encodeURL(String url)
          在portlet中使用JSF時(shí),encodeActionURL和encodeResourceURL方法很有用。encodeActionURL迫使URL作為參數(shù)傳遞,造成動(dòng)作在入口/portlet中起作用。這個(gè)方法的簽名如下:
          public abstract String encodeResourceURL(String sb)
          encodeResourceURL方法迫使URL作為參數(shù)傳遞,引用資源以在入口/portlet中起作用。該方法造成URL需要根據(jù)包括的特定入口進(jìn)行重定向。實(shí)際上,它簡單地返回一個(gè)絕對URL。下面是encodeResourceURL方法的簽名:
          public abstract String encodeResourceURL(String sb)
          3.3.13 分派請求
          dispatchMessage方法可根據(jù)當(dāng)前上下文分派請求。對servlet而言,它通過調(diào)用forward實(shí)現(xiàn)這一點(diǎn);而對portlet而言,則是通過調(diào)用include方法實(shí)現(xiàn)這一點(diǎn)。此方法的簽名如下:
          public abstract void dispatchMessage(String requestURL)
          throws java.io.IOException, FacesException

          posted on 2009-02-12 12:17 origo 閱讀(553) 評(píng)論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 侯马市| 秦皇岛市| 鹤岗市| 湘潭县| 彭水| 松原市| 台东市| 吉水县| 太白县| 白银市| 抚顺市| 昌邑市| 柘城县| 大余县| 遂昌县| 宁津县| 靖江市| 专栏| 保亭| 越西县| 阳西县| 汪清县| 犍为县| 建德市| 庆阳市| 会昌县| 青海省| 大新县| 都兰县| 台安县| 岳西县| 隆昌县| 尖扎县| 和平区| 庆安县| 扶绥县| 河池市| 娄底市| 邵阳县| 格尔木市| 九龙县|