91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么理解Hibernate Validator

發布時間:2022-03-24 10:03:30 來源:億速云 閱讀:119 作者:iii 欄目:web開發

本篇內容介紹了“怎么理解Hibernate Validator”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

更好的方法Hibernate Validator

進行驗證的一種典型方法是對簡單的驗證使用 Commons Validator,并在控制器中編寫其他一些驗證邏輯。Commons Validator 可以生成 JavaScript 來對視圖中的驗證進行處理。但是 Commons Validator 也有自己的缺陷:它只能處理簡單的驗證問題,并且將驗證的信息都保存到了 XML 文件中。Commons Validator 被設計用來與 Struts 一起使用,而且沒有提供一種簡單的方法在應用程序層間重用驗證的聲明。

在規劃有效性驗證策略時,選擇在錯誤發生時簡單地處理這些錯誤是遠遠不夠的。一種良好的設計同時還要通過生成一個友好的用戶界面來防止出現錯誤。采用預先進行的方法進行驗證可以極大地增強用戶對于應用程序的理解。不幸的是,Commons Validator 并沒有對此提供支持。假設希望 HTML 文件設置文本域的 maxlength 屬性來與驗證匹配,或者在文本域之后放上一個百分號(%)來表示要輸入百分比的值。通常,這些信息都被硬編寫到 HTML 文檔中了。如果決定修改 name 屬性來支持 75 個字符,而不是 60 個字符,那么需要改動多少地方呢?在很多應用程序中,通常都需要:
◆更新 DDL 來增大數據庫列的長度(通過 HibernateDoclet、 hbm.xml 或 Hibernate Annotations)。
◆更新 Commons Validator XML 文件將***值增加到 75。
◆更新所有與這個域有關的 HTML 表單,以修改 maxlength 屬性。

更好的方法是使用 Hibernate Validator。驗證的定義都被通過注釋 添加到了模型層中,同時還有對所包含的驗證處理的支持。如果選擇充分利用所有的 Hibernate,這個 Validator 就可以在 DAO 和 DBMS 層也提供驗證。在下面給出的樣例代碼中,將使用 reflection 和 JSP 2.0 標簽文件多執行一個步驟,從而充分利用注釋 為視圖層動態生成代碼。這可以清除在視圖中使用的硬編寫的業務邏輯。

dateOfBirth 被注釋為 NotNull 和過去的日期。 Hibernate 的 DDL 生成代碼對這個列添加了一個非空約束,以及一個要求日期必須是之前日期的檢查約束。e-mail 地址也是非空的,必須匹配 e-mail 地址的格式。這會生成一個非空約束,但是不會生成匹配這種格式的檢查約束。

public class Contact implements Serializable {  public static final int MAX_FIRST_NAME = 30;  public static final int MAX_MIDDLE_NAME = 1;  public static final int MAX_LAST_NAME = 30;   private String fname;  private String mi;  private String lname;  private Date dateOfBirth;  private String emailAddress;   private Address address;   public Contact() {  this.address = new Address();  }   @Valid  @Embedded  public Address getAddress() {  return address;  }   public void setAddress(Address a) {  if (a == null) {  address = new Address();  } else {  aaddress = a;  }  }   @NotNull  @Length(min = 1, max = MAX_FIRST_NAME)  @Column(name = "fname")  public String getFirstname() {  return fname;  }   public void setFirstname(String fname) {  this.fname = fname;  }   @Length(min = 1, max = MAX_MIDDLE_NAME)  @Column(name = "mi")  public String getMi() {  return mi;  }   public void setMi(String mi) {  this.mi = mi;  }   @NotNull  @Length(min = 1, max = MAX_LAST_NAME)  @Column(name = "lname")  public String getLastname() {  return lname;  }

如果需要,Hibernate DAO 實現也可以使用 Validation Annotations。所需做的是在 hibernate.cfg.xml 文件中指定基于 Hibernate 事件的驗證規則。如果真地希望抄近路,您可以只捕獲服務或控制器中的 InvalidStateException 異常,并循環遍歷 InvalidValue 數組。

“怎么理解Hibernate Validator”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

江华| 沿河| 辽宁省| 中西区| 宜昌市| 平潭县| 津南区| 湖口县| 黑山县| 东兴市| 屏边| 台安县| 封开县| 祁连县| 周宁县| 上思县| 吴川市| 永胜县| 布拖县| 布尔津县| 图们市| 阳城县| 收藏| 贺兰县| 绿春县| 百色市| 信阳市| 泗阳县| 沧州市| 自治县| 乐业县| 乌拉特中旗| 元氏县| 柘城县| 大丰市| 昌宁县| 寿宁县| 邛崃市| 搜索| 江门市| 永靖县|