2017-01-06 3 views
1

Вот validation.xmlHibernate ограничение-отображение валидатор с сообщением

<constraint-mappings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/mapping validation-mapping-1.1.xsd" 
       xmlns="http://jboss.org/xml/ns/javax/validation/mapping" version="1.1"> 
<default-package>com.esq.rbac.model</default-package> 
<bean class="Tenant" ignore-annotations="true"> 
    ... 
    <field name="ivrPin"> 
     <constraint annotation="javax.validation.constraints.Size"> 
      <element name="min">6</element> 
      <element name="max">6</element> 
      <message>IVR Pin must be 6 digit numeric</message> 
     </constraint> 
     <constraint annotation="javax.validation.constraints.Pattern"> 
      <element name="regexp">[0-9]+</element> 
     </constraint> 
    </field> 
</bean> 

во время получения ошибки исполнения говоря

c.e.u.imports.Main [run] - HV000115: Error parsing mapping file. 
javax.validation.ValidationException: HV000115: Error parsing mapping file. 
Caused by: org.xml.sax.SAXParseException: cvc-complex-type.2.4.a: 
Invalid content was found starting with element 'message'. One of '{"http://jboss.org/xml/ns/javax/validation/mapping":element}' is expected. 
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source) 

Как включить сообщение об ошибке правильно

+1

Задание 'message' перед тегами' element', непосредственно после аннотации ограничения, разрешит проблему. –

ответ

3

Вам просто нужно сделать одно изменение, поставив свой message dir ectly после constraint annotation тег, перед тегами element.

<bean class="Tenant" ignore-annotations="true"> 
... 
<field name="ivrPin"> 
    <constraint annotation="javax.validation.constraints.Size"> 
     <message>IVR Pin must be 6 digit numeric</message> 
     <element name="min">6</element> 
     <element name="max">6</element> 

    </constraint> 

Причина этого заключается в следующем:

Если вы посмотрите на файл XSD для проверки картирования:

валидация-отображение-1.1.xsd

<xs:complexType name="constraintType"> 
    <xs:sequence> 
     <xs:element type="xs:string" name="message" minOccurs="0"/> 
     <xs:element type="map:groupsType" 
        name="groups" 
        minOccurs="0"/> 
     <xs:element type="map:payloadType" 
        name="payload" 
        minOccurs="0"/> 
     <xs:element type="map:elementType" 
        name="element" 
        maxOccurs="unbounded" 
        minOccurs="0"/> 
    </xs:sequence> 
    <xs:attribute type="xs:string" name="annotation" use="required"/> 
</xs:complexType> 

Использует тег xs:sequence, который указывает, что дочерние элементы должны появляться в последовательности. См. element sequence. Здесь сообщение атрибут встречается перед другими атрибутами, как групп, полезная нагрузка или элемент.

+0

Объяснение делает ответ идеальным – vels4j

Смежные вопросы