<xs:element name="age">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="120"/>
</xs:restriction>
</xs:simpleType>
</xs:element>所以我想把它转换成Java代码,如下所示:
public void setAge(int age){
if(age < 0 || age > 120){
//throw some exception
}
//setting the age as it is a valid value
}这在JAXB中是可能的吗?
我见过一些WebService客户端桩生成器做这件事,可能是axis2 webservice,但不确定。
发布于 2012-12-12 19:46:28
规范没有涵盖在域模型中生成快速失败逻辑。现在的一种常见做法是以注释(或XML)的形式表达验证规则,并对其运行验证。对此进行了标准化,并且在任何JavaEE6实现中都可用。
XJC扩展
我自己还没有尝试过以下扩展,但它似乎将从XML向域模型表示验证规则生成注释。由于XJC具有很好的可扩展性,因此也可以使用其他插件。
发布于 2012-12-10 17:07:14
在JAXB中执行此验证的建议方法是在编组程序resp上打开模式验证。解组程序:
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = schemaFactory.newSchema(...);
ValidationEventHandler valHandler = new ValidationEventHandler() {
public boolean handleEvent(ValidationEvent event) {
...
}
};
marshaller.setSchema(schema);
marshaller.setEventHandler(valHandler);发布于 2014-02-27 17:26:55
你可以试试JAXB-Facets。快速片段:
class MyClass {
@MinOccurs(1) @MaxOccurs(10)
@Facets(minInclusive=-100, maxInclusive=100)
public List<Integer> value;
@Facets(pattern="[a-z][a-z0-9]{0,4}")
public String name;
}https://stackoverflow.com/questions/13775465
复制相似问题