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

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

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

    爪哇一角

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

    二 JSF JavaBean

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

    1.JSF JavaBean介紹

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

    作用是在真正的業(yè)務邏輯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等等型態(tài),您可以設定<value> 值時指定這些值的字串名稱,JSF會嘗試進行轉(zhuǎn)換。

     

    您也可以將其它產(chǎn)生的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一個非常大的區(qū)別,JSF支持反向注入,它可以更好的管理業(yè)務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(依賴注入實現(xiàn))");

                         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就會顯示在頁面上。

     

    主站蜘蛛池模板: 亚洲国产成人久久综合区| 国产福利电影一区二区三区,亚洲国模精品一区 | 十八禁在线观看视频播放免费| 四虎影视无码永久免费| 亚洲网址在线观看你懂的| 一个人免费观看视频www| 午夜亚洲乱码伦小说区69堂| 亚洲国产精品无码一线岛国| 国产福利视精品永久免费| 国产成人亚洲精品蜜芽影院| 亚洲爆乳无码专区| 日本不卡在线观看免费v| 特级做A爰片毛片免费看无码| 亚洲国产系列一区二区三区| 中文字幕日韩亚洲| 国产免费av片在线看| 羞羞视频免费网站在线看| 亚洲婷婷第一狠人综合精品| 亚洲人成网站在线观看青青| 2019中文字幕免费电影在线播放| 在线亚洲v日韩v| 亚洲自偷自拍另类图片二区| 国产jizzjizz免费视频| 免费无码毛片一区二区APP| 亚洲av无码一区二区三区四区| 亚洲va久久久噜噜噜久久狠狠 | 国产92成人精品视频免费| 一级毛片**免费看试看20分钟| 亚洲免费一级视频| 亚洲中文字幕无码爆乳AV| 大陆一级毛片免费视频观看i| 久操免费在线观看| 一级毛片免费全部播放| 日韩亚洲国产综合高清| 亚洲AV永久无码精品一百度影院| 国产女高清在线看免费观看| 青青青国产在线观看免费网站| 在线免费观看h片| 狠狠综合亚洲综合亚洲色| 亚洲最大在线观看| 亚洲av日韩av天堂影片精品|