java - JAXB 是否支持 xsd :restriction?

标签 java web-services jakarta-ee jaxb xsd-validation

<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 客户端 stub 生成器这样做,可能是 axis2 webservice,但不确定。

最佳答案

JAXB (JSR-222)规范不包括在域模型中生成快速失败逻辑。现在的常见做法是以注释(或 XML)的形式表达验证规则并对其运行验证。 Bean Validation (JSR-303)对此进行了标准化,并且可在任何 Java EE 6 实现中使用。

XJC 扩展

我自己还没有尝试过以下扩展,但它似乎会生成 Bean Validation (JSR-303)来自 XML 模式的域模型表示验证规则的注释。由于 XJC 具有很强的可扩展性,因此可能还有其他可用的插件。

关于java - JAXB 是否支持 xsd :restriction?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24864865/

相关文章:

java - 如何使用 BeanPropertyTarget 解决此错误?

java - 如何在不使用绝对路径的情况下使用 log4j.properties 为 Java Web 服务创建日志文件

java - IllegalStateException:HttpServlet.service 中为 null

java - 绑定(bind) JNDI 名称 com.jinsoft.dating.server.ProfileEJBRemote 时出错

java - 从 Java 中的 Camel 路线获取可视化文档?

java - signalR javascript运行时对象不支持属性

java - 我应该使用什么作为集合的内存屏障?

c# - 在 api 文件夹中使用遗留 asmx 服务的 Web Api 2 路由配置

java - EJB 方法在每次调用后需要更多时间返回

java - 在 JTextArea 中显示大文件