我使用Hibernate Validator作为JSR-303验证提供程序及其xml样式约束描述。 所以,我有一个
<bean class="com.my.User" ignore-annotations="true">
<field name="email">
<constraint annotation="javax.validation.constraints.Pattern">
<element name="regexp"><![CDATA[[A-Za-z0-9\._%+-]{1,64}@[A-Za-z0-9.-]+\.[A-Za-
z]{2,4}]]></element>
</constraint>
</field>
.....
</bean>
我还有一个单独的类,其中包含我的所有模式
public final class Regexps {
public static final String EMAIL_REGEXP = "A-Za-z0-9\._%+-]{1,64}@[A-Za-z0-9.-]+\.[A-
Za-z]{2,4}";
....
}
所以,正如你所看到的,我有两个地方,那里有电子邮件regexp,我只想要一个地方。
我的问题: 是否可以使用
public static final String EMAIL_REGEXP = "A-Za-z0-9\._%+-]{1,64}@[A-Za-z0-9.-]+\.[A-
Za-z]{2,4}";
xml中的字段,以便
我可以直接引用字符串字段。 所以我希望有类似的东西:
<bean class="com.my.User" ignore-annotations="true">
<field name="email">
<constraint annotation="javax.validation.constraints.Pattern">
<element name="regexp">Regexps.EMAIL_REGEXP</element>
</constraint>
</field>
.....
</bean>
顺便说一句,可以通过注释
public class User {
@Pattern(regexp = Regexps.EMAIL_REGEXP)
private String email;
}
但是我无法使用注释,因为我使用了用于数据传输的旧版POJO,并且无法更改源代码。
答案 0 :(得分:1)
目前,无法从XML约束映射中引用约束。不过,我认为这是一个好主意。您可以在issue tracker中打开功能请求,以便我们在那里讨论该功能吗?
如果你不能使用注释,你可以试试Hibernate Validator的API for programmatic constraint declaration,然后你可以使用模式的共享常量。