当前位置: 首页 > 面试题库 >

JAXB是否支持xsd:restriction?

贺刚毅
2023-03-14
问题内容
<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 Client存根生成器正在执行此操作,但也许不确定axis2 Webservice。


问题答案:

JAXB(JSR-222)
规范没有盖产生快速失败逻辑到域模型。现在,一种常见的做法是以注释(或XML)的形式表示验证规则,并对它们进行验证。
Bean验证(JSR-303)
对此进行了标准化,并且可以在任何Java EE 6实现中使用。


XJC扩展

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

  • https://github.com/krasa/krasa-jaxb-tools


 类似资料:
  • 问题内容: 我有一个定义元素和属性默认值的架构。我正在尝试使用基于该架构的JAXB解析文档,但是JAXB没有设置默认值。关于如何使JAXB接受模式中的默认值的任何想法? example.xsd: example1.xml TestParser.java RootElement.java ChildEl.java 问题答案: 元素默认值 要获取element属性的默认值,您需要对其进行如下注释: 属

  • 问题内容: 我正在尝试执行一个简单的INSERT并返回标识(自动递增主键)。我试过了 我收到以下错误 SQLite是否支持SCOPE_IDENTITY? 如果可以,该如何使用? 如果不是,我(最好是“线程安全”)的替代方案是什么? 问题答案: 查看常见问题解答。该sqlite3_last_insert_rowid()函数将做到这一点。不过要小心触发器。

  • 我正在使用RDF4J工作台: 尽管我可以在github上的RDF4J存储库中看到对GeoSPARQL的引用,但目前似乎还没有实现。我在已清除的“带RDFS自旋支持的内存存储”存储库上运行了这个SPARQL更新查询,以在RDF4J工作台上设置测试: 这导致一个存储库具有一个事实。 现在,我尝试通过以下查询查找与文字多边形的重叠,该查询应该可以找到上面设置的一个事实: 此查询以HTML的形式给出了一个

  • 问题内容: 我想知道是否有任何方法可以在Java中实现。我认为,如果没有本地对闭包的支持,这是不可能的。 问题答案: Java 8(2014年3月18日发布)不支持curring。可以将Missingfaktor在答案中发布的示例Java代码重写为: …这是非常好的。就个人而言,有了Java 8,我几乎没有理由使用替代的JVM语言(例如Scala或Clojure)。当然,它们提供了其他语言功能,但

  • Spring Cloud库伯内特斯是否支持Spring Cloud负载均衡器? 我要在库伯内特斯上部署Spring启动应用程序,并通过以下链接执行客户端负载平衡功能区客户端https://cloud.spring.io/spring-cloud-static/spring-cloud-kubernetes/2.0.0.M1/reference/html/#ribbon-discovery-in-k

  • 这里是基于workerman实现的PHP版本的socket.IO。 项目: https://github.com/walkor/phpsocket.io 手册:https://github.com/walkor/phpsocket.io/tree/master/docs/zh