大魚

          JSF使用注意點(diǎn)

          JSF使用注意點(diǎn)

          1.轉(zhuǎn)換時(shí)間時(shí),必須加上時(shí)區(qū)GMT+8,不然相差一天。
          <f:convertDateTime  timeZone="GMT+8" dateStyle="long" type="date"/>
           
          2.<h:outputText value="#{productBean.view}"/>當(dāng)view為空時(shí),不顯示。
           
          3. 
          actionListener在執(zhí)行了action之后再執(zhí)行。
           
          可以沒有action,而只有actionListener。
           
          action可以設(shè)置成一個(gè)方法,也可以設(shè)置為一個(gè)導(dǎo)航用例的<from-outcome>
          多個(gè)頁(yè)面如果使用了同一個(gè)request級(jí)的backingBean,可能導(dǎo)致一些莫名其妙的問題。如:不能執(zhí)行指定的Action.
           
          4.對(duì)于向managed-bean的屬性注入request參數(shù)時(shí),其<managed-bean-scope>必須為request,<property-class>不要為值類型(如果是值類型,當(dāng)指定的request參數(shù)為空時(shí),注入時(shí)會(huì)出錯(cuò),因?yàn)橐粋€(gè)空對(duì)象如Integer null不能自動(dòng)轉(zhuǎn)換為一個(gè)值類型如int的0)。如下所示:
          <managed-bean>
             <managed-bean-name>productBean</managed-bean-name>
             <managed-bean-class>demo.view.ProductBean</managed-bean-class>
             <managed-bean-scope>request</managed-bean-scope>
             <managed-property>
              <property-name>id</property-name>
              <property-class>java.lang.Integer</property-class>
              <value>#{param.id}</value>
             </managed-property>
             <managed-property>
              <property-name>view</property-name>
              <property-class>java.lang.Boolean</property-class>
              <value>#{param.view}</value>
             </managed-property>
            </managed-bean>
           
          5.對(duì)于以下查找是按部件id查找的,不是按參數(shù)名稱查找的。
          UIParameter uip =(UIParameter)event.getComponent().findComponent("productId");
          //event是actionListener中的參數(shù)ActionEvent類型。
          所以
          <h:commandLink action="view">
          <f:param id="productId" name="id" value="#{product.id}"/>
          </h:commandLink>
          <f:prarm>必須設(shè)置id
           
          Map params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
          String someValue = params.get("id");

          這個(gè)是按參數(shù)名稱查找的
          JSF標(biāo)簽只是JSF組件的外衣,Id就是組件的命名,與Delphi的組件名是一樣的,之所以用Id不用Name,是為了與HTML中的一致(HTML input組件 id是其標(biāo)識(shí),name是其傳遞到服務(wù)器端的參數(shù)名。),所以查找JSF組件當(dāng)然用Id了。
           
          6.當(dāng)一個(gè)頁(yè)面的BackingBean的構(gòu)造函數(shù)中運(yùn)行出錯(cuò)或?qū)傩宰⑷氤鲥e(cuò)時(shí),表面上會(huì)報(bào)計(jì)算表達(dá)式錯(cuò)誤,原因是這個(gè)BackingBean沒有構(gòu)造出來,為空,當(dāng)然在Reader頁(yè)面時(shí)會(huì)沒有辦法求相關(guān)的表達(dá)式的值。
           
           
          7.request級(jí)的BackingBean在從客戶端到服務(wù)端一次請(qǐng)求后,就被銷毀。在這次請(qǐng)求中,只會(huì)被創(chuàng)建一次。在Forward之前創(chuàng)建的BackingBean在Forward之后,并不會(huì)被再次創(chuàng)建。
           
          8.判斷是否是回傳。
          protected boolean isPostBack()
           {
            if (FacesContext.getCurrentInstance().getRenderResponse())
             return false;
            else
             return true;
           }
           
           
          9.<f:view>里使用<jsp:include>時(shí)的注意事項(xiàng)
          感謝 tdwebber 提供。

          1) When using a jsp:include within the f:view tags, must include f:subview in the included file (or around the jsp:include tag).

          當(dāng)在f:view中使用jsp:include標(biāo)簽插入一個(gè)文件時(shí),必須用f:subview把jsp:include包起來

          2) In the include file, cannot have any HTML. All HTML tags must be wrapped in f:verbatim tags.

          在被插入的文件中,不能有任何的html標(biāo)簽,如果必須使用html標(biāo)簽,必須用f:verbatim將它包起來。

          3) Within main f:view tags however, it is not necessary to wrap everything in f:verbatim tags (it's not bad either). Just HTML that appears as children to other JSF components (i.e. t:newspaperTable).

          在主f:view中,沒有必要用f:verbatim將html標(biāo)簽包起來(當(dāng)然包起來也可以)。當(dāng)html標(biāo)簽出現(xiàn)在子視圖或其它JSF部件標(biāo)簽中時(shí),就要用f:verbatim包起來。

          10.JSF的緩存能力好像太強(qiáng)了,有時(shí)停止了服務(wù)器,改動(dòng)了jsp頁(yè)面中的jsf標(biāo)簽,再啟動(dòng)服務(wù)器,但到該頁(yè)面時(shí),還是原來的內(nèi)容,需要手動(dòng)刷新一下。有時(shí)需要先轉(zhuǎn)到別的頁(yè)面,再回來刷新一下才能看到更新的內(nèi)容。

          posted on 2009-10-25 22:50 大魚 閱讀(196) 評(píng)論(0)  編輯  收藏 所屬分類: JSF

          主站蜘蛛池模板: 惠安县| 农安县| 新和县| 全南县| 法库县| 黄山市| 安阳县| 长宁县| 盐津县| 镇远县| 鄯善县| 安康市| 福州市| 海伦市| 富裕县| 绥化市| 田阳县| 麻城市| 桐乡市| 沧州市| 会理县| 项城市| 梁平县| 赫章县| 福安市| 喀什市| 乐安县| 黄大仙区| 梁平县| 灵石县| 慈利县| 米脂县| 丰城市| 双辽市| 汉中市| 汾阳市| 哈尔滨市| 德州市| 彝良县| 南华县| 曲水县|