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

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

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

    冰浪

    哥已不再年輕 - 堅定夢想,畢生追求!
    posts - 85, comments - 90, trackbacks - 0, articles - 3
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    受控bean與實體bean的數(shù)據(jù)傳遞

    Posted on 2006-09-25 13:51 冰浪 閱讀(1278) 評論(4)  編輯  收藏 所屬分類: Frameworks

    這些日子在用JSF+Hibernate組合來實現(xiàn)一簡單應用——留言本。

    ???????? 思路如下:
    ???????? 用JSF作為View層,Hibernate實現(xiàn) Model層即數(shù)據(jù)持久化,而Control層則采用POJO,即JavaBean。

    ???????? 在model層,用hibernate生成持久化對象,作為與數(shù)據(jù)庫間數(shù)據(jù)交互的“介質(zhì)對象”(自己命名的,呵呵)。如留言信息類Message.class,這也是POJO,即實體bean,所含方法只是setter/getter。但其卻與DB表中數(shù)據(jù)類型相對應的。

    ???????? 在view層JSF中,與頁面顯示組件進行值綁定的受控bean承擔了數(shù)據(jù)顯示與操作的任務。在此應用中,如MessageBean.class,這是與hibernate中的Message.class這一實體bean相對應的。

    ???????? 為什么不直接使用實體bean作為view層的數(shù)據(jù)顯示對象呢?這是因為在MVC模式中,任何兩層間都應該是“松藕合”狀態(tài),而不產(chǎn)生相互依賴的情形。

    ???????? 既然如此,受控bean與實體bean之間又如何實現(xiàn)數(shù)據(jù)的傳遞呢?

    ???????? 在control層中,建立一個MessageBuilder.class類,來實現(xiàn)兩bean間的交互,這個類中主要利用了org.apache.commons.beanutils.BeanUtils類的copyProperties方法來實現(xiàn)。MessageBuilder.java的具體實現(xiàn)代碼如下:

    //**********MessageBuilder.java的具體實現(xiàn)代碼begin**************
    package efan5.myguestbook.control;

    import java.lang.reflect.InvocationTargetException;
    import org.apache.commons.beanutils.BeanUtils;

    import efan5.myguestbook.model.Message;
    import efan5.myguestbook.view.MessageBean;

    public class MessageBuilder {
    ?
    ?public MessageBuilder(){}
    ?
    ?public static Message createMessage(MessageBean messageBean){
    ??Message message = new Message();
    ??try {
    ???BeanUtils.copyProperties(message, messageBean);
    ??} catch (IllegalAccessException e) {
    ???
    ???e.printStackTrace();
    ??} catch (InvocationTargetException e) {
    ??????e.printStackTrace();
    ??}
    ??return message;
    ?}
    ?
    ?public static MessageBean createMessageBean(Message message){
    ??MessageBean messageBean = new MessageBean();
    ??try {
    ???BeanUtils.copyProperties(messageBean,message);
    ??} catch (IllegalAccessException e) {
    ???
    ???e.printStackTrace();
    ??} catch (InvocationTargetException e) {
    ??????e.printStackTrace();
    ??}
    ??return? messageBean;
    ?}

    }
    //**********MessageBuilder.java的具體實現(xiàn)代碼end**************

    ???????? 這就實現(xiàn)了受控bean與實體bean的數(shù)據(jù)交互。
    ???????? PS:BeanUtils.copyProperties(obj1,obj2) 方法要對象obj1,obj2中的相對應的屬性的名字和數(shù)據(jù)類型一致,否則會產(chǎn)生數(shù)據(jù)類型不匹配的異常。但并不是要求屬性數(shù)目一致。


    評論

    # re: 受控bean與實體bean的數(shù)據(jù)傳遞  回復  更多評論   

    2006-09-25 14:53 by 123bingbing
    如果你是編程高手,這里將是你一個展現(xiàn)自我的新舞臺----www.mylinux.com.cn

    # re: 受控bean與實體bean的數(shù)據(jù)傳遞  回復  更多評論   

    2006-09-27 06:08 by 祎恬凡
    PropertyUtils.copyProperties:Copy property values from the "origin" bean to the "destination" bean for all cases where the property names are the same (even though the actual getter and setter methods might have been customized via BeanInfo classes).

    這說明該方法可以拷貝bean中只要命名相同的屬性值,而不要求類型是否一致。當然了,類型不同的時候,他會自己去轉(zhuǎn)換,當轉(zhuǎn)換不過來的時候就會發(fā)生那個classcastexception了。

    # re: 受控bean與實體bean的數(shù)據(jù)傳遞  回復  更多評論   

    2006-09-27 06:08 by 祎恬凡
    PropertyUtils.copyProperties:Copy property values from the "origin" bean to the "destination" bean for all cases where the property names are the same (even though the actual getter and setter methods might have been customized via BeanInfo classes).
    這說明該方法可以拷貝bean中只要命名相同的屬性值,而不要求類型是否一致。當然了,類型不同的時候,他會自己去轉(zhuǎn)換,當轉(zhuǎn)換不過來的時候就會發(fā)生那個classcastexception了。

    # re: 受控bean與實體bean的數(shù)據(jù)傳遞  回復  更多評論   

    2006-09-29 16:31 by 冰川
    支持下,呵呵!
    主站蜘蛛池模板: 国产AV无码专区亚洲A∨毛片| 免费萌白酱国产一区二区| 久久亚洲精品AB无码播放| 久久成人18免费网站| 亚洲综合伊人久久大杳蕉| 成人毛片100免费观看| 久久精品国产精品亚洲精品| a级在线免费观看| 亚洲AV福利天堂一区二区三| 久久狠狠躁免费观看| 99亚洲精品高清一二区| 91热久久免费精品99| 亚洲伊人精品综合在合线| 九九九精品成人免费视频| 亚洲精品无码aⅴ中文字幕蜜桃| 精品无码国产污污污免费| 久久精品国产亚洲av瑜伽| 亚洲成aⅴ人片久青草影院| 你懂得的在线观看免费视频| 亚洲av午夜成人片精品网站| www.免费在线观看| 亚洲人成色在线观看| 亚洲av中文无码| 久久国产乱子精品免费女| 亚洲女人影院想要爱| 日韩在线天堂免费观看 | 亚洲欧美日韩国产精品一区| 国产zzjjzzjj视频全免费| 春意影院午夜爽爽爽免费| 亚洲人成在线电影| 性色av免费观看| 久久久久久毛片免费看| 亚洲一级免费毛片| 免费a在线观看播放| 久久精品无码精品免费专区| 亚洲中文无码卡通动漫野外| 久久精品亚洲男人的天堂 | 美女被免费视频网站a国产| 丰满人妻一区二区三区免费视频| 亚洲精品美女久久久久| 亚洲国产成人久久综合一区77|