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

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

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

    amp@java

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      99 隨筆 :: 0 文章 :: 228 評論 :: 0 Trackbacks
        JSF只能采用POST的方法進(jìn)行FORM提交,同一頁面要顯示不同的內(nèi)容,只有通過POST來改變參數(shù)或者通過SESSION傳遞變量。有時候有大量相似的頁面,這些頁面只有很少一部分不同(例如不同用戶、不同角色、不同頁碼等),通過跟在URL后面的query string本來可以很容易地實(shí)現(xiàn),但在JSF里卻不行,只要一提交,馬上就把?后面那串東西丟掉。假如有一個頁面,根據(jù)URL后面的id參數(shù)來顯示FORM的內(nèi)容,提交的時候如果驗(yàn)證出錯,那個FORM的內(nèi)容就丟失了,顯示一個莫名其妙的頁面,因?yàn)檫@時候那個id參數(shù)已經(jīng)沒有了。還有常用的分頁操作,本來在URL后面加上個頁碼就可以了,但是JSF的分頁控件卻只能通過POST來翻頁,一刷新就出來個“重試”“取消”的對話框,讓人煩惱。如果頁面內(nèi)容根據(jù)不同用戶角色有細(xì)微不同,就得每個角色建立一個頁面,每個頁面對應(yīng)一個managed bean,這些頁面的內(nèi)容基本相同,bean的內(nèi)容也基本相同,卻要分別建立,一點(diǎn)重用的機(jī)會都沒有。今天做的一個東西就遇到了這種問題:
    一個簡單的審批流程,只有3個角色,申請者、審批者、執(zhí)行者,整個流程是這樣的:申請者填單->審批者查看并審批->執(zhí)行者執(zhí)行并填入結(jié)果->申請者查看。這樣,每種角色都有兩種列表:未回復(fù)和已回復(fù),這兩種列表在三個角色里面都是相似的,但有細(xì)微區(qū)別:
    申請者 審批者 執(zhí)行者
    未回復(fù)列表 自己已發(fā)出但未被執(zhí)行者執(zhí)行的列表 申請者已提交但自己未審批的列表 審批已通過但自己未執(zhí)行的列表
    已回復(fù)列表 自己已發(fā)出且執(zhí)行者已執(zhí)行的列表 申請者已提交且自己已審批的列表 審批已通過且自己已執(zhí)行的列表

    這些列表的不同之處在于:已登錄用戶的角色(可以從session中得到,但一個用戶可能有多種角色,他可能以不同的角色查看列表),列表的當(dāng)前狀態(tài)(對每種角色都有兩種狀態(tài)),列表的頁碼。由于每個列表都有可能有大量數(shù)據(jù),所以必須用到分頁。通過JSF的DataTable空間和DataScroller控件可以簡單地實(shí)現(xiàn)分頁,然而,這種分頁導(dǎo)致URL后面的參數(shù)無效了,這樣一來,這六種列表就必須通過6個頁面來顯示了,通過頁面的名稱來區(qū)分當(dāng)前用戶的角色、所查看的列表的狀態(tài),每個頁面通過POST來決定頁碼。本來一個頁面+一個bean+3個參數(shù)就可以決定,現(xiàn)在需要6個頁面+6個bean來完成了。

    list.jsp?type=0&role=0&page=1->type0_role0.jsp
    list.jsp?type=0&role=1&page=1->type0_role1.jsp
    list.jsp?type=0&role=2&page=1->type0_role2.jsp
    list.jsp?type=1&role=0&page=1->type1_role0.jsp
    list.jsp?type=1&role=1&page=1->type1_role1.jsp
    list.jsp?type=1&role=2&page=1->type1_role2.jsp

    假如有n種狀態(tài)m種角色那豈不是要n*m個頁面+n*m個bean?

    有點(diǎn)想放棄JSF這個雞肋了。

    希望有高手給條生路走走!
    posted on 2008-06-04 19:48 amp@java 閱讀(2349) 評論(11)  編輯  收藏 所屬分類: JSF

    評論

    # re: 缺少GET的JSF令人郁悶 2008-06-04 22:45 小武
    也不至于就為了這個而放棄JSf吧,呵呵
    http://www.laoge.info
      回復(fù)  更多評論
      

    # re: 缺少GET的JSF令人郁悶 2008-06-05 08:42 HiMagic!
    要看JSF給你帶了哪些好處,然后權(quán)衡一下是否值得,說實(shí)在的,我不反對這些框架,但還是覺得自己寫的簡易框架好,因?yàn)槭橇可矶ㄗ龅摹8鞣N框架的設(shè)計思想是我們的借鑒之處,但我們卻不一定要上他的船。  回復(fù)  更多評論
      

    # re: 缺少GET的JSF令人郁悶 2008-06-05 11:01 Always BaNg.
    根本上就沒有搞懂JSF!!

    UI只是model的直接顯示。

    定義一個bean,bean里面包含兩個屬性
    class MyBean
    {
    private Role role; //角色
    private int type; //未回復(fù),已回復(fù)
    public List getWorkList()
    {
    if (role == AuditRole)
    ....
    if (type == 0)
    . ..
    return list; //最后提供給DataTable顯示的列表
    }
    }

    然后注冊這個bean,在datatable里面 value=#{bean.workList}

      回復(fù)  更多評論
      

    # re: 缺少GET的JSF令人郁悶 2008-06-05 17:15 隔葉黃鶯
    JSF 不會不支持 Form 的 GET 吧,那這樣的話,對 RESTful 就沒法支持了  回復(fù)  更多評論
      

    # re: 缺少GET的JSF令人郁悶 2008-06-05 20:13 amp@java
    @Always BaNg.

    請問role和type的值從哪里獲取呢?  回復(fù)  更多評論
      

    # re: 缺少GET的JSF令人郁悶 2008-06-05 20:15 amp@java
    @隔葉黃鶯

    JSF的確不支持FROM的get,<h:form>里沒有method這個屬性。但是通過managed bean可以獲取query string 里的參數(shù)值,只不過一提交就把參數(shù)丟掉了
      回復(fù)  更多評論
      

    # re: 缺少GET的JSF令人郁悶 2008-06-06 09:17 Always BaNg.
    我可以給一個完全滿足你需要的完整jsf例子,程序總是有辦法的,關(guān)鍵是跳出思維圈、。  回復(fù)  更多評論
      

    # re: 缺少GET的JSF令人郁悶 2008-06-07 12:57 Always BaNg.
    留下你的email 地址,我給你發(fā)過去demo,運(yùn)行之后你就明白了,或者加我的msn: step.in@hotmail.com。當(dāng)時搞工作流的時候很深入的修改過JSF,現(xiàn)在不搞了,但我覺得web framework中jsf是最強(qiáng)大的,也最難,因?yàn)樗季S和以往的web開發(fā)模式不連續(xù)。

    JSF的核心就是基于一系列關(guān)聯(lián)的request-response短期context,構(gòu)造出一個面向應(yīng)用的context即facecontext,其中的重點(diǎn)就是這一系列request-response交互的時候狀態(tài)(state)保存的問題。

    在做單個圖形界面開發(fā)的時候,比如swing的jframe,我們根本不用考慮參數(shù),狀態(tài)的存取問題,因?yàn)樗趐rocess address space中,狀態(tài)保存的地方和根據(jù)狀態(tài)執(zhí)行某個操作的方法在同一個scope中,而web開發(fā)就不是,一個request-response(體現(xiàn)在form submit中)中保存狀態(tài),而另外一個requst-reponse需要根據(jù)前一個request-response的狀態(tài)來執(zhí)行某個操作。

    你碰到也是這個問題,想當(dāng)然的利用query string來傳遞,但jsf不支持get,jsf提供了不只比get好很多倍的方法,那就是直接放到model中,page里面的control如select/input等直接跟model綁定。

    還有一點(diǎn),JSF不支持GET,但支持Query String,比如你在某個form里面這么寫
    <h:form action="foobar.jsf?a=1&b=2">

    </h:form>

    通過facecontext.getExternalContext().getRequestParameterMap().
    是能獲取到參數(shù)a和b的值得。

      回復(fù)  更多評論
      

    # re: 缺少GET的JSF令人郁悶 2008-06-10 09:38 amp@java
    @Always BaNg.
    您好,我的郵箱amplifier2000##163.com
    還望賜教,感謝!  回復(fù)  更多評論
      

    # re: 缺少GET的JSF令人郁悶 2008-06-10 09:43 amp@java
    @Always BaNg.
    還有一點(diǎn),JSF不支持GET,但支持Query String,比如你在某個form里面這么寫
    <h:form action="foobar.jsf?a=1&b=2">

    </h:form>

    通過facecontext.getExternalContext().getRequestParameterMap().
    是能獲取到參數(shù)a和b的值得。

    ——————————————————————

    <h:form>是沒有action這個屬性的啊,只能提交到本身,并不能提交到其他頁面,強(qiáng)行指定之后也是提交到本身,而且會把后面的querystring丟掉。  回復(fù)  更多評論
      

    # re: 缺少GET的JSF令人郁悶 2008-06-11 10:35 Always BaNg.
    不好意思,搞錯了,應(yīng)該是<form>的action屬性,或者自定義h:form。

    例子發(fā)過去了。  回復(fù)  更多評論
      

    主站蜘蛛池模板: 国产亚洲精品久久久久秋霞| 亚洲日本久久久午夜精品| 在线观看的免费网站无遮挡| 国产成人精品亚洲2020| 四虎影院永久免费观看| 免费国产叼嘿视频大全网站| 亚洲黄页网在线观看| 亚洲精品国产精品国自产观看| 中文字幕免费高清视频| 婷婷亚洲综合一区二区| 亚洲国产成人精品不卡青青草原| 女人与禽交视频免费看| a级片免费在线观看| 亚洲色最新高清av网站| 亚洲精品国产精品乱码不卡√| 国产精品成人免费视频网站京东| 一级黄色毛片免费看| 亚洲一区在线免费观看| 国产亚洲欧洲Aⅴ综合一区| 一区二区无码免费视频网站| 99精品全国免费观看视频..| 亚洲暴爽av人人爽日日碰| 亚洲一级二级三级不卡| 久久精品亚洲乱码伦伦中文| 永久免费毛片在线播放| 免费精品99久久国产综合精品| 国产精品亚洲lv粉色| 亚洲神级电影国语版| 人人狠狠综合久久亚洲88| xvideos亚洲永久网址| 日本精品人妻无码免费大全| 久久青草91免费观看| 国产精品视频全国免费观看| 亚洲欧美日韩久久精品| 色拍自拍亚洲综合图区| 亚洲色大成网站www永久一区| 国产福利免费观看| 久久久久久久久免费看无码| 亚洲精品免费在线观看| 国产情侣久久久久aⅴ免费 | 亚洲av永久无码天堂网|