首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JAXB支持xsd:restriction吗?

JAXB支持xsd:restriction吗?
EN

Stack Overflow用户
提问于 2012-12-08 15:22:25
回答 3查看 17.7K关注 0票数 21
代码语言:javascript
复制
<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代码,如下所示:

代码语言:javascript
复制
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,但不确定。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-12 19:46:28

规范没有涵盖在域模型中生成快速失败逻辑。现在的一种常见做法是以注释(或XML)的形式表达验证规则,并对其运行验证。对此进行了标准化,并且在任何JavaEE6实现中都可用。

XJC扩展

我自己还没有尝试过以下扩展,但它似乎将从XML向域模型表示验证规则生成注释。由于XJC具有很好的可扩展性,因此也可以使用其他插件。

票数 21
EN

Stack Overflow用户

发布于 2012-12-10 17:07:14

在JAXB中执行此验证的建议方法是在编组程序resp上打开模式验证。解组程序:

代码语言:javascript
复制
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);
票数 5
EN

Stack Overflow用户

发布于 2014-02-27 17:26:55

你可以试试JAXB-Facets。快速片段:

代码语言:javascript
复制
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;

}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13775465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档