2017-02-23 11 views
0

Spring/Jetty/Jersey環境でこれを試みています。ジャージのリソース設定では、正しいプロパティを設定するようにしています。私はnotNullがnullの代わりに空の文字列として入ってくる特殊なケースだと見ていますが、最大文字数を超えると、少なくとも不正なリクエストの例外が発生しますか? 200Spring/Jersey/Jetty環境でJersey Beanバリデータが初期化されない

ビジネスで10の文字の結果よりも長い

投稿列が

@Path("/testJaxb") 
public interface DiagnosticResourceApi { 

    @Path("/test") 
    @POST 
    @ApiOperation(value="Test JaxB", notes="Testing jaxb annotation.") 
    public Response testJaxb(@Valid TestRequest request); 

} 

リソースの実装

public class DiagnosticResourceImpl implements DiagnosticResourceApi{ 

    public Response testJaxb(TestRequest request){ 
     return Response.ok().build(); 
    } 
} 
public class TestRequest { 

    private TestBo businessObject; 

    public TestBo getBusinessObject() { 
     return businessObject; 
    } 

    public void setBusinessObject(TestBo businessObject) { 
     this.businessObject = businessObject; 
    } 

} 



public class TestBo { 

    @NotNull 
    private String requiredValue; 
    private String notRequiredValue; 
    @Size(max=10) 
    private String max10Chars; 

    //getters/setters 
    //.... 

} 

リソースインタフェースオブジェクト3210ジャージーリソース構成

@Component 
@ApplicationPath("/api") 
public class JerseyResourceConfig extends ResourceConfig { 

    public JerseyResourceConfig() { 
     register(DiagnosticResourceImpl.class); 
     property(org.glassfish.jersey.server.ServerProperties.BV_SEND_ERROR_IN_RESPONSE, true); 

    } 

} 
+0

注釈をインターフェイスに追加するだけでなく、リソースクラスにも注釈を追加してみてください。 –

+0

私はそれが可能であるかどうかはわかりません。私はそれらをインタフェースからリソースクラスに移すことができましたが、あなたが見るように、制約は要求オブジェクトBeanで定義されています。 –

+0

現在、 '@ Valid'アノテーションはインタフェースにあります。すべての注釈をリソースクラスに移動してみてください。 –

答えて

0

固定。リクエストオブジェクトBOに@validを追加しました。明らかに、オブジェクトプロパティは親の検証制約を継承しません。完璧に動作します。

public class TestRequest { 
    @Valid 
    private TestBo businessObject; 

    public TestBo getBusinessObject() { 
     return businessObject; 
    } 

    public void setBusinessObject(TestBo businessObject) { 
     this.businessObject = businessObject; 
    } 

} 
関連する問題