FacesContext / ExtrnalContext javax.faces.context.*import javax.faces.context.ExternalContext; import javax.faces.context.FacesContext; ... ExternalContext ctx = FacesContext.getCurrentInstance().getExternalContext(); HttpServletRequest request = (HttpServletRequest) ctx.getRequest(); Map<String, Object> reqmap = ctx.getRequestMap(); HttpServletResponse response = (HttpServletResponse) ctx.getResponse(); HttpServletSession session = (HttpServletSession) ctx.getSession(); Map<String, Object> sesmap = ctx.getSessionMap(); Flash flash = (Flash)ctx.getFlash(); <f:param> / <f:viewParam><h:commandLink ... actionListener="bean.check" ...> <f:param name="op" value="google" /> public check(ActionEvent ae) { this.op = (String) FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("op"); } <f:metadata> <f:viewParam> <h:commandLink action="" ><f:param name="var" value="option" /> <f:viewParam name="var" value="#{managedBean.property}" /> </h:commandLink> FacesContext對每個JSF請求,FacesServlet 物件都會為其獲取一個 javax.faces.context.FacesContext 類別的實例。 javax.faces.context.FacesContextFactory 物件的 getFacesContext方法,以此來做到這一點:
圖3-1 FacesContext實例及其封裝的物件 FacesContext fc = FacesContextFactory.getCurrentInstance(); 組件樹(Tree) 獲取和修改組件樹(javax.faces.tree.Tree) 添加和獲取消息(javax.faces.application.Message) 添加和獲取請求處理事件 UIComponent可以生成FacesEvent對象。比如,當單擊一個UICommand組件時,它會生成一個ActionEvent對象 (ActionEvent類是FacesEvent類的子類)。 向Response對象裡寫入資訊 為了向Response對象裡寫入資訊,FacesContext類提供了兩個屬性,一個是 javax.faces.Context.ResponseStream類型,另一個是 javax.faces.context.ResponseWriter類型。ResponseStream類型的對象用於輸出二進制資料,而 ResponseWriter類型的對象則用於輸出字符。 locale屬性裡存放了當前處理中所用的Locale對象。 操作請求處理生命週期FacesContext類還提供了兩個方法與請求 處理生命週期進行交互: ● 在當前階段的處理完成後,調用renderResponse方法通知JSF實現把控制權轉到呈現響應階段。也就是說,處於當前階段和呈現響應階段之間的所 有其他階段都不再執行。 ● 調用responseComplete方法,告訴JSF實現此次請求的HTTP響應已經完成(比如在使用了HTTP重定向的情況下)。因此,當前階段完成 後,必須中止請求處理生命週期的處理。 這些方法的簽名如下: public abstract void renderResponse() public abstract void responseComplete() 3.2.8 獲取其他請求狀態資訊其他每個請求的狀態資訊封裝在ExternalContext對象裡,可以使用 getExternalContext方法獲取該對象: public abstract ExternalContext getExternalContext() ExternalContext放在下一節討論。 http://book.csdn.net/bookfiles/181/1001818237.shtml JSF中CommandButton与CommandLink传值 http://www.zhlwish.com/2009/12/31/jsf_commandbutton_commandlink/ |