日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

JSF學(xué)習(xí)筆記

 知識(shí)存儲(chǔ)館 2013-05-03
I 

FAQ   

1. JSFSpring如何結(jié)合?

A: 通過在faces-config配置文件中加入

     <application>

        <variable-resolver>org.springframework.web.jsf.DelegatingVariableResolver</variable-resolver>

     </application>

     可以使JSFSpring結(jié)合。

 

2. 為何稱JSF是基于event的?而Struts是基于請(qǐng)求驅(qū)動(dòng)或者Command驅(qū)動(dòng)。

A: JSF是以頁(yè)面組件為中心的,而頁(yè)面組件是面向事件的。JSF只有commandButton,commandLink這兩個(gè)UI組件是基于事件的,可以設(shè)定action屬性,而該屬性便是調(diào)用后臺(tái)managed-bean的對(duì)應(yīng)方法。

    不過ASP.NET是所有UI組件都是面向事件的。

    而其他UI組件,可以通過設(shè)定value屬性,來調(diào)用后臺(tái)managed-bean的對(duì)應(yīng)方法,獲取其返回值。例如:

    <h:outputText value="#{testBean.creationTime}"/>

    如果獲取的返回值是一個(gè)自定義類型或者List,如何進(jìn)行取自定義類型的屬性或者迭代?

    可以通過類似EL(稱為JSF-EL)的方式來獲取嵌套屬性的值??梢酝ㄟ^#{purchases.cheapItems[2]}或者

#{purchases.valuableItems["low"]}獲取List的值。

 

3. JSF的訪問路徑的機(jī)制?

A: JSF是以頁(yè)面組件為中心的,類似ASP.NET。所以要訪問JSF的應(yīng)用,實(shí)際上是直接訪問JSP頁(yè)面。不過對(duì)xx.jsp的訪問路徑要修改成xx.faces。(類似ASP.NET去訪問xx.aspx

 

  

4. JSF是否有interceptor等攔截器機(jī)制?如何在managed-bean中使用ServletAPI?

A: JSF可以在頁(yè)面增加actionListener,類似interceptor的機(jī)制。

   ServletAPI可以通過FacesContext,例如:

   FacesContext fc = FacesContext.getCurrentInstance();

   fc.getExternalContext().getResponse();

   fc.getExternalContext().getRequest();

 

 

5. JSF可否結(jié)合其他JSP標(biāo)簽?結(jié)合ajax是否方便?在頁(yè)面層結(jié)合Scriptlet是否方便,可否跟requestAttribute等結(jié)合使用?

A: JSF可以使用其他JSP標(biāo)簽以及JSTLJSF通過EL取值和通過JSF-EL取值是效果一樣的。例如

     <LI>Employee's first name: ${employee.name.firstName}

   <LI>Employee's first name: <h:outputText value="#{employee.name.firstName}"/> 作用一樣。

 

   JSF后臺(tái)managed-bean的返回值實(shí)際上是放在requestAttrubite中,key為其屬性名。所以可以直接在JSPScriptlet中與requestAttribute等結(jié)合使用。

 

 

6. JSFMVC框架與Struts框架的異同?

A: JSFMVC框架跟ASP.NET類似,是以頁(yè)面組件為中心的。 要先訪問指定的jsp相關(guān)的faces然后再跳轉(zhuǎn)到Controller最后再到View。如下圖所示:

    StrutsMVC框架是 Controller(action)->View(JSP)

    JSFMVC框架是    View(*.faces)->Controller(managed-bean)->View(JSP)

 

7.JSF能否實(shí)現(xiàn)類似Struts action(or servlet)->view(JSP)?.faces相關(guān)的jsp能否隱藏起來?

A: 都不能。  

 

8.JSF<managed-bean>可以實(shí)現(xiàn)對(duì)actionBean的設(shè)值注入。

 

9.配置文件的分離,通過在web.xml中設(shè)置

  <context-param>

     <param-name>javax.faces.CONFIG_FILES</param-name>

     <param-value>/WEB-INF/faces-config-beans.xml,/WEB-INF/faces-config-nav.xml</param-value>

  </context-param>

10.JSFASP.NET的一些區(qū)別。

   ASP.NET頁(yè)面控件的nameid 是跟自命名是一致的。例如:

   <input name="TextBox1" type="text" value="ss" id="TextBox1" />

 

11.JSF如何傳遞頁(yè)面參數(shù)?

A: 通過<h:commandLink action="viewProduct" styleClass="highLightLink">

      <h:outputText value="view"/>

      <f:param name="productId" value="#{productBean.id}"/>

      </h:commandLink>

   這種方式是通過post來傳遞參數(shù)的。對(duì)于url參數(shù)只能在backingBean中,通過如下代碼獲取

   FacesContext fc = FacesContext.getCurrentInstance();

String id = (String) fc.getExternalContext().getRequestParameterMap().get("id");

 

    JSF的優(yōu)缺點(diǎn):

    我認(rèn)為JSF的優(yōu)缺點(diǎn)都是因?yàn)檫@個(gè)框架是以頁(yè)面組件為中心。

    優(yōu)點(diǎn):可以利用一些功能強(qiáng)大的UI組件,這些UI組件是服務(wù)器端,并且基于事件的。可以方便地定義事件響應(yīng)方法。

    缺點(diǎn):太依賴于UI組件。目前尚沒有可以跟vs.net媲美的IDE來支持基于UI組件的開發(fā)。所以開發(fā)和配置起來還是有些麻煩,而且開發(fā)自定義的UI組件更加復(fù)雜。

            因?yàn)橐蕾囉?/span>UI組件,所以頁(yè)面層的開發(fā)不夠靈活。

            因?yàn)橐蕾囉?/span>UI組件,所以很多原始的html標(biāo)簽不能用。這導(dǎo)致美工設(shè)計(jì)的靜態(tài)頁(yè)面,到程序員這邊還要經(jīng)過不小的調(diào)整,而不像其他web框架那樣結(jié)合方便。

   

 

 

    JSF的標(biāo)準(zhǔn)標(biāo)簽包括以下幾個(gè)類別:   

輸出(Outputs

  其名稱以output作為開頭,作用為輸出指定的訊息或綁定值。

輸入(Inputs

  其名稱以input作為開頭,其作用為提供使用者輸入字段。

命令(Commands

  其名稱以command作為開頭,其作用為提供命令或連結(jié)按鈕。

選擇(Selections

  其名稱以select作為開頭,其作用為提供使用者選項(xiàng)的選取。

其它

  包括了form、messagemessages、graphicImage等等未分類的標(biāo)簽。

 

JSF的頁(yè)面組件的屬性中,都沒有name這個(gè)屬性。    這些標(biāo)準(zhǔn)標(biāo)簽都可以設(shè)定id、styleClass等屬性值。

 

   如果自定義JSF的頁(yè)面組件,一般會(huì)用到以下的類:

   javax.faces.component.UIComponent

 自定義Component所要繼承的父類別,但通常,您是繼承其子類別,例如UIInputUIOutput等等。

javax.faces.webapp.UIComponentTag

 自定義JSF標(biāo)簽所要繼承的父類別,繼承它可以幫您省去許多JSF標(biāo)簽處理的細(xì)節(jié)。

javax.faces.context.FacesContext

 包括了JSF相關(guān)的請(qǐng)求信息,您可以透過它取得請(qǐng)求對(duì)象或請(qǐng)求參數(shù),或者是Application對(duì)象。

javax.faces.application.Application

 包括了一個(gè)應(yīng)用程序所共享的信息

 

   如果安裝了myeclipse,jsp頁(yè)面中只要包含有jsftaglib(如下所示),則會(huì)自動(dòng)打開JSFDesigner

   <%@ taglib prefix="f" uri="http://java./jsf/core" %>

<%@ taglib prefix="h" uri="http://java./jsf/html" %>    

 

   JSFStruts2的整合

JSF可以跟Struts2進(jìn)行整合,具體參考《Struts 2權(quán)威指南》

后臺(tái)可以使用Struts2Action類,這些類因?yàn)榭梢杂?/span>Spring來管理,更具有可測(cè)試性。

前臺(tái)頁(yè)面依舊使用JSF的頁(yè)面組件。

 

只要加入struts2jsflib包以及struts2-jsf-plugin-2.**.jar

然后簡(jiǎn)單修改web.xml以及在struts.xml中加入相應(yīng)的interceptors即可,而不需要faces-config.xml配置文件。

    <package name="jsf" extends="jsf-default">

      <interceptors>

       <interceptor-stack name="jsfFullStack">

        <interceptor-ref name="params" />

        <interceptor-ref name="basicStack"/>

        <interceptor-ref name="jsfStack"/>

       </interceptor-stack>

      </interceptors>

      <default-interceptor-ref name="jsfFullStack"/>

     </package>

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多