2015-10-21 55 views
0

如何使用Jaxb2Marshaller啓用對模式的驗證? 以下舉例如果DateTime標記錯誤(應與T「2015-09-09 T 16:56:39」),我沒有得到異常,unmarshaller只是用null返回模型。Spring Jaxb2Marshaller驗證不起作用

 schema: <xs:element name="ExecutionTime" minOccurs="0" maxOccurs="1" 
       type="xs:dateTime" /> 

     tag example <ExecutionTime>2015-09-09 16:56:39</ExecutionTime> 



      Jaxb2Marshaller marshaller = null; 
      marshaller = new Jaxb2Marshaller(); 
      marshaller.setContextPath(contextPath); 
      ClassPathResource schemaResource = new ClassPathResource(classpathXSD); 
      marshaller.setSchema(schemaResource); 
      marshaller.setMappedClass(Entity.class); 

      marshaller.unmarshal(stringSource) 
+0

你見過[此鏈接](http://stackoverflow.com/a/26176086/3364187)嗎?我認爲是有幫助的 – Xstian

+0

是的,但我沒有答案。只能再次說明,特定模式不會使Srping Jaxb2Marshaller根據模式驗證xml。 – magulla

回答

0
.. 
marshaller.setValidationEventHandler(validationEvent -> processEvent(validationEvent)); 
.. 

所以,我發現了什麼,就是如果你指定這一點,你會真正開始得到驗證錯誤事件和異常,如果你的XML有關於XSD無效數據。