一种简单的方法(也可以使用 jersey)是通过 XML 配置休眠验证器。将 validation.xml 文件放在 META-INF 文件夹中,并在引用的 xml 文件中创建约束映射:
src/main/resources/META-INF/validation.xml(validation.xml 必须在类路径中的 META-INF 文件夹中):
<validation-config
xmlns="http://jboss.org/xml/ns/javax/validation/configuration" version="1.1">
<constraint-mapping>META-INF/mapping.xml</constraint-mapping>
</validation-config>
src/main/resources/META-INF/mapping.xml:
<constraint-mappings
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/mapping validation-mapping-1.1.xsd"
xmlns="http://jboss.org/xml/ns/javax/validation/mapping" version="1.1">
<default-package>com.example</default-package>
<bean class="MyBean" ignore-annotations="true">
<field name="name">
<constraint annotation="javax.validation.constraints.Size">
<element name="max">5</element>
</constraint>
<constraint annotation="javax.validation.constraints.NotNull">
</constraint>
</field>
</bean>
</constraint-mappings>
src/main/java/com/example/MyBean.java:
package com.example;
public class MyBean {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
src/main/java/com/example/MyResource.java:
package com.example;
import javax.validation.Valid;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
@Path("/api")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class MyResource {
@POST
public String postIt(@Valid MyBean bean) {
return bean.getName();
}
}