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

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

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

    隨筆 - 170  文章 - 536  trackbacks - 0
    <2006年3月>
    2627281234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    常用鏈接

    我參與的團(tuán)隊(duì)

    隨筆分類(lèi)(103)

    搜索

    •  

    積分與排名

    • 積分 - 415104
    • 排名 - 135

    最新評(píng)論

    閱讀排行榜

        好久都沒(méi)有去寫(xiě)點(diǎn)東西了,不過(guò)最近也沒(méi)有太多的時(shí)間去專門(mén)研究一些東西,就把我在實(shí)踐中的一些經(jīng)驗(yàn)?zāi)贸鰜?lái)和大家分享。因?yàn)?iCustomer 這個(gè)使用 JSF 的項(xiàng)目,最近一直在嘗試解決一些過(guò)去遺留下來(lái)的問(wèn)題,比如說(shuō)驗(yàn)證之類(lèi)的,還有防止重復(fù)提交頁(yè)面,最后加上一個(gè)日期轉(zhuǎn)換的問(wèn)題。
        先說(shuō)一下驗(yàn)證碰到的一些問(wèn)題了,驗(yàn)證的時(shí)候我使用的是 Shale 的 <s:commonsValidator> 組件,按照它提供的標(biāo)準(zhǔn)方法的話在應(yīng)用中會(huì)碰到一些問(wèn)題。按照標(biāo)準(zhǔn)的方法,我們應(yīng)該在 <h:form> 中寫(xiě)這樣的東西,<h:form onsubmit="return validateForm(this);">,但是這樣在 JSF 中會(huì)存在問(wèn)題,當(dāng)表單中有一個(gè)以上的 Action 事件或者 ValueChange 事件,我們知道,JSF的事件觸發(fā)時(shí)會(huì)提交表單,這是就會(huì)觸發(fā)<h:form>這個(gè)onsubmit里面的方法,所以這樣的話,任何事件都會(huì)觸發(fā)驗(yàn)證,但我們的表單里只有一個(gè)保存的 Action,需要驗(yàn)證輸入,而其它的 Action 或 ValueChange 并不要求執(zhí)行驗(yàn)證,這樣的話,標(biāo)準(zhǔn)的方法就不太適用了,我看公司項(xiàng)目組的方法是寫(xiě)個(gè)方法,在不需要的時(shí)候調(diào)一個(gè) JavaScript 把這個(gè)方法 Cancel 掉,但這樣也比較麻煩,我目前采用的方法就是在需要驗(yàn)證的 Action 里面加上這樣的方法來(lái)進(jìn)行驗(yàn)證,也就是這樣 <t:commandButton id="save" value="#{msg['system.button.save']}" action="#{parameterBean.save}" onclick="return validateForm(this.form)"/> ,這樣的話,就只在我們需要驗(yàn)證的幾個(gè)地方進(jìn)行驗(yàn)證。
        不過(guò)總的來(lái)說(shuō),Shale 提供的這種驗(yàn)證方式有時(shí)候可能會(huì)顯得不夠靈活,我們過(guò)去在 struts 中有兩種方式,一種是針對(duì) form 的驗(yàn)證,另一種是針對(duì) action 的驗(yàn)證,如果我們要對(duì)某些表單元素在不同的 action 時(shí)執(zhí)行不同的驗(yàn)證規(guī)則,就可以使用 action 驗(yàn)證了,但Shale 的這種方式就無(wú)能為力了。
        然后要介紹一個(gè)防止重復(fù)提交的方法。在網(wǎng)上找了很久,好像就是沒(méi)有人關(guān)注這個(gè)問(wèn)題似的,不過(guò)這個(gè)問(wèn)題在 struts 中有很不錯(cuò)的方法,就是使用 token,其實(shí)我要介紹的也是和這個(gè)完全相同的解決辦法,很簡(jiǎn)單,一句話解決問(wèn)題。我們?nèi)绻戳?Shale 的一些文檔的話,會(huì)注意到 Shale 里面有 <s:token> 這個(gè)標(biāo)簽,對(duì)就是這個(gè),我們只要在 form 里加入這個(gè)標(biāo)簽的話,就可以了,如果重復(fù)提交的話,會(huì)提示出錯(cuò)的,不過(guò)出錯(cuò)信息是英文的,找了個(gè)比較暴力的方法,把信息改成中文的了,分享一下了,用 WinRAR 打開(kāi) shale-core.jar\org\apache\shale\resources,里面有一個(gè) Bundle.properties 文件,把這個(gè)文件拿出來(lái),把 token.invalid 改成你需要的信息,再把這個(gè)文件塞回去就可以了,比較暴力了,僅供應(yīng)急使用,不推薦。
        剛才出去幫人家看一個(gè)問(wèn)題,經(jīng)過(guò)做 JSF 那個(gè)項(xiàng)目組,想起來(lái)一個(gè)關(guān)于日期格式化的問(wèn)題,拿出來(lái)說(shuō)明一下了,對(duì)于中國(guó)用戶,要把日期轉(zhuǎn)換的 timeZone 設(shè)置成GMT+8才能轉(zhuǎn)換正確,也就是這么寫(xiě) <f:convertDateTime pattern="dd/MM/yyyy" timeZone="GMT+8"/>。
    posted on 2006-03-07 09:57 steady 閱讀(2998) 評(píng)論(2)  編輯  收藏 所屬分類(lèi): JSF & Myfaces

    FeedBack:
    # re: 使用Shale巧妙解決JSF中的幾個(gè)難題 2006-09-19 14:13 wmh
    如果用了server端驗(yàn)證的話,上面的做法只是饒開(kāi)了client端

    s:token 在使用了valuechange 的form中也會(huì)有這種問(wèn)題。
      回復(fù)  更多評(píng)論
      
    # re: 使用Shale巧妙解決JSF中的幾個(gè)難題 2006-09-19 14:16 wmh
    valuechange一次就認(rèn)為是一次submit了 之后就不能再submit了  回復(fù)  更多評(píng)論
      
    主站蜘蛛池模板: 亚洲无码高清在线观看| 在线免费一区二区| 亚洲熟妇无码八AV在线播放| 亚洲人成电影网站色| 曰皮全部过程视频免费国产30分钟 | 亚洲精品无码久久一线| 免费看一级高潮毛片| 国产男女猛烈无遮挡免费网站| 欧美日韩亚洲精品| 全部免费国产潢色一级| 男女猛烈无遮掩视频免费软件| 免费吃奶摸下激烈视频| 尤物视频在线免费观看| 国产亚洲av人片在线观看| 91视频免费网站| 亚洲天堂中文字幕| 皇色在线视频免费网站| 最新国产精品亚洲| 国产不卡免费视频| 国产精品视频全国免费观看| 亚洲AV综合色区无码一区爱AV| 久久久精品免费国产四虎| 亚洲码一区二区三区| 最新中文字幕免费视频| 猫咪免费观看人成网站在线| 国产aⅴ无码专区亚洲av麻豆| 美女视频黄的免费视频网页| 亚洲午夜精品在线| 国产精品免费_区二区三区观看| 成人福利在线观看免费视频| 亚洲va久久久噜噜噜久久男同| 99无码人妻一区二区三区免费| 亚洲欧美日韩一区二区三区在线 | 在线亚洲人成电影网站色www| 久久精品国产这里是免费| 亚洲人成伊人成综合网久久| 国产午夜免费福利红片| 国产成人精品无码免费看| 亚洲jizzjizz在线播放久| 亚洲精品高清一二区久久| 日韩免费无码一区二区三区 |