1

非常にまれなケースであり、グーグルで検索しても役に立たないようです。

xml 検証 (生成されたコード) を使用する必要があり、シナリオは次のようになります。

 // This file was generated by the JavaTM Architecture for XML
 Binding(JAXB) Reference Implementation, v2.2.4 

 ...

 @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "xxx", propOrder
 = { ... }) @XmlRootElement(name = "xxx") public class Class01DTO
     implements Serializable { ...
     @XmlElement(required = true)
     protected BetslipDTO.SlipPlacement slipPlacement;

     ...

     @XmlAccessorType(XmlAccessType.FIELD)
     @XmlType(name = "", propOrder = { ...
     })
     public static class Class02
         implements Serializable
     {

         private final static long serialVersionUID = ...;

         protected String stringToValidate;


     }

 }

「stringToValidate」を検証する方法に自信がありません。次のような Constraints-mapping.xml があります。

<bean class="com.etc.Class01DTO.Class02">
    <field name="stringToValidate">
        <constraint annotation="javax.validation.constraints.NotNull">
        </constraint>
    </field>
</bean>

それは単にエラーを生成します。さまざまな組み合わせが試されましたが、結果はありません。誰かが同じケースに直面したことがありますか?コードが生成されることは明らかであるため、注釈ベースの検証オプションを使用することはできません...

ビルドを実行すると、次のようなエラーが表示されます...

  shouldValidateSpringContext(com.etc.TestBetSpringContext): Error creating bean with name 'validatorFactoryBean' defined in class path resource [spring/bet-service.xml]: Invocation of init method failed; nested exception is javax.validation.ValidationException: HV000065: Unable to load class: com.etc.Class01DTO.Class02.
4

1 に答える 1

2

ネストされたクラス名を指定する場合は、代わりに を使用する必要があります。com.etc.Class01DTO$Class02これらのクラスをコンパイルした後、ターゲット ディレクトリを確認すると、ネストされたすべてのクラスが名前に含まれる個別のファイルにコンパイルされていることがわかります$

于 2012-11-20T05:52:45.000 に答える