日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

jsf表单验证_JSF:在正确的阶段进行验证(了解生命周期)

發(fā)布時間:2023/12/3 javascript 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jsf表单验证_JSF:在正确的阶段进行验证(了解生命周期) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

jsf表單驗證

嗨,大家好!

盡管標(biāo)題強調(diào)驗證一詞,但本文實際上是關(guān)于JSF生命周期的。 那是因為我相信,真正了解生命周期的最簡單方法之一就是通過做出我們一直在做的事情:驗證用戶輸入。

通常,了解所謂的JSF生命周期是使初級開發(fā)人員與眾不同的地方,這些初級開發(fā)人員主要復(fù)制并粘貼他們在其面前看到的所有內(nèi)容,而高級開發(fā)人員則可以在面對不常見的情況而不會損害代碼質(zhì)量的情況下“贊嘆”它。 。

通常,當(dāng)我面試某個聲稱擁有JSF經(jīng)驗并且似乎不了解生命周期的人時,我認(rèn)為這是一個不好的信號:)

總覽

如果您曾經(jīng)讀過一本關(guān)于JSF的書,那么您可能已經(jīng)看過以下圖片:

此圖顯示了生命周期中的所有階段。 關(guān)于本文感興趣的內(nèi)容,其中三個對我們最有用: 流程驗證 , 更新模型值和調(diào)用應(yīng)用程序 。

讓我們假設(shè)一個假設(shè)的應(yīng)用程序在其中注冊用戶。 在其中,我們將詢問用戶的姓名和年齡:

為了“處理”上面的表單,我們可能需要兩個工件:一個接受請求的Managed Bean和一個表示正在注冊的Person的實體對象:

證實

直截了當(dāng)?shù)?#xff0c;讓我們假設(shè)我們有一個要求說明“年齡”字段不能接收負(fù)值。 完全有道理,因為沒有人可以擁有“ -32”歲。 (我們還假設(shè)使用javascript是沒有問題的。在這樣的簡單驗證中,javascript就可以了。但是請耐心等待這個。):)

然后,我們剩下兩種主要方法來驗證“年齡”字段:

  • 在我們的Managed Bean類的“ save()”方法內(nèi)部。 ( 建議使用)
  • 使用JSF驗證程序 。 (推薦的)
  • 我堅持使用“不建議”和“推薦”這兩個詞來強調(diào),在過程驗證階段之外驗證用戶輸入不是犯罪。 我們經(jīng)常面臨無法實現(xiàn)“幸福之路”的情況。 犯罪是在做事的時候根本不知道發(fā)生了什么!

    接下來是解釋。

    不像這樣

    我歸類為“不推薦”的方法是在“ save()”方法所包含的邏輯中驗證托管Bean中的“ age”字段。 當(dāng)用戶點擊在“提交”,JSF生命周期踢,并調(diào)用“保存()”的調(diào)用應(yīng)用程序相法右(注意這是在處理驗證階段之后 ):

    為了了解為什么這可能是不好的,我們需要了解在每個JSF生命周期階段中發(fā)生的事情,并且還要記住Invoke Application階段發(fā)生 Process Validation和Update Model Values之后 。 概括地說,這意味著僅在Person對象已經(jīng)通過JSF生命周期更新了其“ age”屬性之后才調(diào)用“ save()”方法:

    查看上圖,您可能已經(jīng)注意到,當(dāng)調(diào)用我們的“ save()”方法時,JSF生命周期已經(jīng)在域類Person對象的“ age”屬性中設(shè)置了不一致的值。 那是個問題嗎?

    是的,可能是。 由于我們的域類大多數(shù)時候都是由JPA管理的,因此,像這樣的無效值可能最終會在沒有我們意識到的情況下進(jìn)入數(shù)據(jù)庫。 根據(jù)我的個人經(jīng)驗,我得出的結(jié)論是,在使用“擴展的持久性上下文”(即跨越多個請求/響應(yīng)周期的JPA上下文)時,此類錯誤更為常見。 如今,這通常是通過使用“對話上下文”來完成的,例如CDI中或在已故的JBoss Seam中。

    現(xiàn)在我們在說

    理想情況下,我們應(yīng)該使用JSF Validator驗證輸入。 注意,這并不一定意味著僅為驗證邏輯創(chuàng)建一個單獨的類,而是意味著我們必須在正確的階段 ( 流程驗證)觸發(fā)驗證 :

  • 我們可以創(chuàng)建一個帶有@FacesValidator注釋的驗證器類。
  • 或在我們的Managed Bean類中創(chuàng)建一個驗證方法 。
  • 就像我說的那樣,無論如何進(jìn)行驗證,主要要注意的是在正確的階段進(jìn)行驗證。 還有幾種驗證輸入的方法,例如Bean Validation 。

    就這樣

    希望你們喜歡。 評論和問題可以留在下面。 直到下一次!

    翻譯自: https://www.javacodegeeks.com/2015/03/jsf-validation-at-the-right-phase-understanding-the-life-cycle.html

    jsf表單驗證

    總結(jié)

    以上是生活随笔為你收集整理的jsf表单验证_JSF:在正确的阶段进行验证(了解生命周期)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。