2016-04-08 7 views
1

私はジャージーベースのアプリケーションを持っており、入力にバリデーションを追加したいと思います。アノテーションのないジャージ検証

@POST 
@Produces(APPLICATION_JSON) @Consumes(APPLICATION_JSON) 
public SomeResponce myMethod(@Valid MyBean myBean) 

問題は、私の豆は原型によって生成されており、検証注釈を追加できません。ジャージーで http://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#section-programmatic-api

しかし、イムは非常になじみのないとBean内の注釈を使用せずにジャージーにこのカスタムバリデータを追加する方法をドキュメントで見つけるカント:私は、アノテーション/ XMLせずに豆を検証するためにどのような方法を見つけました。それを行う方法はありますか?

ジャージー版 - 2.8

+0

そして..あなたは、あなたの問題を解決しましたか?答えは役に立ちましたか? –

+0

はい、このように、すべてがOKです。ありがとう! –

答えて

1

簡単な方法(とあまりにもジャージを持つ可能性は)configure hibernate validator via XMLにあります。 META-INFフォルダにvalidation.xmlファイルを配置し、参照されるXMLファイルにconstraint-mappingsを作成します。

のsrc /メイン/リソース/ META-INF/validation.xml(validation.xmlがフォルダ内にある必要がありますMETA-INFあなたのクラスパスに):

<validation-config 
     xmlns="http://jboss.org/xml/ns/javax/validation/configuration" version="1.1"> 
    <constraint-mapping>META-INF/mapping.xml</constraint-mapping> 
</validation-config> 

のsrc /メイン/リソース/ META-INF/mapping.xml

<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.example</default-package> 
    <bean class="MyBean" ignore-annotations="true"> 
     <field name="name"> 
      <constraint annotation="javax.validation.constraints.Size"> 
       <element name="max">5</element> 
      </constraint> 
      <constraint annotation="javax.validation.constraints.NotNull"> 
      </constraint> 
     </field> 
    </bean> 
</constraint-mappings> 

のsrc /メイン/ javaの/ COM/EX十分な/ MyBean.java

package com.example; 

public class MyBean { 

    private String name; 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 
} 

のsrc /メイン/ javaの/ COM /例/ MyResource.java

package com.example; 
import javax.validation.Valid; 
import javax.ws.rs.*; 
import javax.ws.rs.core.MediaType; 

@Path("/api") 
@Produces(MediaType.APPLICATION_JSON) 
@Consumes(MediaType.APPLICATION_JSON) 
public class MyResource { 

    @POST 
    public String postIt(@Valid MyBean bean) { 
     return bean.getName(); 
    } 
} 
+0

これは簡単な方法ですが、ああ私を殺してください;) – wolktm

関連する問題