<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    爪哇一角

    共同探討STRUTS#HIBERNATE#SPRING#EJB等技術
    posts - 3, comments - 6, trackbacks - 0, articles - 99
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    二 JSF JavaBean

    Posted on 2009-01-20 14:46 非洲小白臉 閱讀(257) 評論(0)  編輯  收藏 所屬分類: JSF

    1.JSF JavaBean介紹

    JSF使用 JavaBean 來達到程式邏輯與視圖分離的目的,在JSF中的Bean其角色是屬于Backing Bean,又稱之為Glue Bean。

    作用是在真正的業務邏輯Bean及UI元件之間搭起橋梁,相當于STRUTS中的FormBean,對頁面的值進行存儲。

    JSF將Bean的管理集中在faces-config.xml中,上面介紹的JSF的例子如下:

    <!-- bean定義 -->

        <managed-bean>

            <managed-bean-name>user</managed-bean-name>

             <managed-bean-class>test.UserBean</managed-bean-class>

            <managed-bean-scope>session</managed-bean-scope>

        </managed-bean>

    <managed-bean-class>設定所要使用的Bean類別,<managed-bean-name>設定之名稱,

    <managed-bean-scope>設定Bean的存活范圍,您可以設定為request、session 與application,設定為request時,Bean的存活時間為請求階段。

    您還可以將存活范圍設定為none,當設定為none時會在需要的時候生成一個新的Bean,例如您在一個method中想要生成一個臨時的Bean,就可以將之設定為none。

     

    如果有必要在啟始Bean時,自動設置屬性的初始值,則可以如下設定:

    ....
    <managed-bean>
      <managed-bean-name>user</managed-bean-name>
        <managed-bean-class>
          test.UserBean
        </managed-bean-class>
      <managed-bean-scope>session</managed-bean-scope>
        <managed-property>
          <property-name>name</property-name>
          <value>caterpillar</value>
        </managed-property>
        <managed-property>
          <property-name>password</property-name>
          <value>123456</value>
        </managed-property>
    </managed-bean>
    .... 

    您的屬性不一定是字串值,也許會是int、float、boolean等等型態,您可以設定<value> 值時指定這些值的字串名稱,JSF會嘗試進行轉換。

     

    您也可以將其它產生的Bean設定給另一個Bean的屬性,例如:

    <managed-bean>

    <managed-bean-name>user</managed-bean-name>

    <managed-bean-class>test.UserBean</managed-bean-class>

    <managed-bean-scope>session</managed-bean-scope>

    </managed-bean>

    <managed-bean>

    <managed-bean-name>userinfo</managed-bean-name>

    <managed-bean-class>test.UserBeanInfo</managed-bean-class>

    <managed-bean-scope>session</managed-bean-scope>

    <managed-property>

    <property-name>userBean</property-name>

    <property-class>test.UserBeanService</property-class>

    <value>#{user}</value>

    </managed-property>

    </managed-bean>

    UserBeanInfo里面定義了變量userBean,變量userBean的類型是類UserBean,這里就把變量userBean直接賦值為#{user}。

     

    2.JSF JavaBean示例(反向注入)

    其實通常我們所說的反向注入(Ioc)就是這個,這也是JSF和STRUTS一個非常大的區別,JSF支持反向注入,它可以更好的管理業務Bean的對象。

    下面舉個例子:

    在配置文件中:

    <managed-bean>

    <managed-bean-name>userinfo</managed-bean-name>

    <managed-bean-class>test.UserBeanInfo</managed-bean-class>

    <managed-bean-scope>session</managed-bean-scope>

    <managed-property>

    <property-name>userBean</property-name>

    <property-class>test.UserBeanService</property-class>

    <value>#{user}</value>

    </managed-property>

    </managed-bean>

    這樣,當UserBeanInfo的實例建立的時候,就會自動將UserBeanService的對象賦值給UserBeanInfo實例的變量userBean。

    JsfBeanExample.jsp

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

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

    <%@page contentType="text/html;charset=utf-8"%>

    <html>

    <head>

    <title>JSF JavaBean示例(反向注入)</title>

    </head>

    <body>

    <f:view>

           <h:form>

                  <h3>請輸入您的名稱</h3>

                  <h:outputText value="#{user.errMessage}" style="color:red"/><p>

                  <!-- 姓名 -->

                  名稱: :<h:inputText value="#{user.name}" />

                  <p>密碼:<h:inputSecret value="#{user.password}"/>

                 

                  <p><h:commandButton value="送出"

                         action="#{userinfo.verify1}" />

           </h:form>

    </f:view>

    </body>

    </html>

     

    UserBeanInfo.java:

    package test;

    public class UserBeanInfo {

           UserBeanService userBean;

           public String verify1() {

                  if (!userBean.getName().equals("sunlin")

                                || !userBean.getPassword().equals("123456")) {

                         userBean.setErrMessage("名稱或者密碼錯誤1(依賴注入實現)");

                         return "failure";

                  } else {

                         return "success";

                  }

           }

           /**

            * userBean をセットする

            * @param userBean the userBean to set

            */

           public void setUserBean(UserBeanService userBean) {

                  this.userBean = userBean;

           }

    }

    UserBeanInfo的類里面并沒有綁定頁面輸入的信息,頁面輸入的信息是綁定在Userbean中的。但是我們在faces-config.xml配置文件中設置了反向注入,

    UserBeanService直接設置到UserBeanInfo的變量userBean里,所以在類UserBeanInfo中可以直接取得Userbean中的信息進行Check。

    ▲注意:UserBeanInfo中必須要定義setUserBean()方法。

    http://localhost:8080/jsfTest/pages/jsfBeanExample.faces 當你用戶名或者密碼出錯的時候,Message就會顯示在頁面上。

     

    主站蜘蛛池模板: 精品国产精品久久一区免费式| 亚洲综合激情另类专区| 亚洲JIZZJIZZ妇女| 久久精品国产亚洲AV不卡| 99久久精品免费视频| 亚洲乱理伦片在线观看中字| 亚洲国产av一区二区三区| 毛片无码免费无码播放| 亚洲成在人线aⅴ免费毛片| 亚洲精品蜜桃久久久久久| 国产精品美女午夜爽爽爽免费| 一区二区免费在线观看| 亚洲国产成人手机在线电影bd| 国产极品美女高潮抽搐免费网站| 日本一区午夜艳熟免费| 亚洲人成小说网站色| a高清免费毛片久久| 亚洲精品二三区伊人久久| 国产精品V亚洲精品V日韩精品 | 亚洲中文字幕人成乱码| 亚洲精品无码久久不卡| 国产三级在线观看免费| 午夜免费福利小电影| 日韩精品免费一线在线观看 | 成年免费a级毛片免费看无码| 亚洲av一本岛在线播放| 亚洲乱码国产乱码精品精| 国内大片在线免费看| 蜜臀98精品国产免费观看| 亚洲一区二区三区免费| 亚洲欧美中文日韩视频| 91在线亚洲精品专区| 国产日产亚洲系列最新| 国产高清免费在线| 动漫黄网站免费永久在线观看| 在线成人精品国产区免费| 偷自拍亚洲视频在线观看99| 最新亚洲卡一卡二卡三新区| 亚洲系列国产精品制服丝袜第| 亚洲熟妇av一区二区三区漫画| 国产a不卡片精品免费观看|