@PropertySource(value = "classpath:valid.properties")
public class Role implements Serializable {
@Id
private String id;
@Pattern(regexp = "^[a-zA-Z0-9_]{6,32}$")
private String name;
valid.properties:
username=^[a-zA-Z0-9_]{6,32}$
password=^[a-zA-Z]\w{5,17}$
email=^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
regexp 值已修复
修改@Pattern:
@Pattern(regexp = "${username}") // compile Error
private String name;
**我想替换正则表达式值,而不是使用属性**
怎么办?
答案 0 :(得分:0)
不是来自外部属性,而是如何:
private static final String USERNAME = "^[a-zA-Z0-9_]{6,32}$";
private static final String PASSWORD = "^[a-zA-Z]\w{5,17}$";
private static final String EMAIL = "^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$";
@Pattern(regexp = USERNAME)
private String name;
...
在Java EE 7中,您可以注入如下属性值:
@Inject @ConfigurationValue(value="username")
private String userName;
但是我不确定你是否可以在另一个JPA注释中使用那个String。试试看。
有关使用@ConfigurationValue
的详细信息,请参阅What are Best Practice Recommendations for Java EE 7 Property File Configuration?