gpt4 book ai didi

JSF 2 重用 JPA 实体中定义的验证?

转载 作者:行者123 更新时间:2023-12-02 07:48:17 25 4
gpt4 key购买 nike

让我们从一个例子开始:


在我的 JPA 实体中

public class User {
@Pattern("^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$", message="invalidEmailResourceBundleKey")
private String email;

@Min(5, message="minimumResourceBundleKey")
private int age;

...
}

在我的 JSF Bean 中

public class UserBean {
private User user;

// do i have to redefine it here, since it's already a part of the user ?
@@Pattern("^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$")
public String getEmail() {
return user.getEmail();
}
public void setEmail(String s) {
user.setEmail(s);
}

// do i have to redefine it here, since it's already a part of the user ?
@Min(5, message="minimumResourceBundleKey")
public int getAge() {
return user.getAge();
}
public void setAge(int age) {
user.setAge(age);
}
}

是否可以重用 JSF bean 的实体验证,实际上将方法调用委托(delegate)给实体,这样我就不必在 JSF bean 上重新定义 bean 验证?

我是否可以将重用扩展到资源包中的错误消息级别,以及消息是否可以像往常一样用 {0} 等参数化?我想知道网络上是否有这方面的示例,因为我找不到任何示例。

请分享您对此的看法..

谢谢!

最佳答案

如果您没有不必要地展平 bean 属性,则不需要重新定义它们。只需使用 getUser() 即可。

public class UserManager {

private User user;

public User getUser() {
return user;
}

}

并直接绑定(bind)到 JPA 实体的属性。

<h:inputText value="#{userManager.user.email}" />
<h:inputText value="#{userManager.user.age}" />

与具体问题无关,您的电子邮件正则表达式对于去年引入的国际化域名 (IDN) 将失败。我会修复正则表达式,使其不仅接受拉丁字符。另见 this answer举个例子。

关于JSF 2 重用 JPA 实体中定义的验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5374009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com