2016-08-16 9 views
1

私はJPAとHibernateアノテーションを使用するSpring MVC Webアプリケーションと私自身のカスタムアノテーションを持っています。 はの私は、このオブジェクトを持っているとしましょう:JSPページでPOJOのフィールドのアノテーション(JPAとHibernate)を取得する方法

public class User{  
    @Size(min = 2, max = 20) 
    private String name; 
} 

は、JSPページからの私のオブジェクトの注釈値を取得する方法はありますか?

${User.name.Size.min} 

よう 何か私が明らかになってきました願っています。

は事前

答えて

1

にありがとう、あなたがこれを実行すべきではないような音が、これは、あなたが始めることがあります。私は、リフレクションのために別のクラスを作成します。 jspはgettersによってプロパティを探します。あなたがこれを行うことができます

public class UserAnnotationResolver { 

    public static FieldAnnotationResolver getName() { 
     try { 
      return new UserAnnotationResolver().new FieldAnnotationResolver(User.class.getDeclaredField("name")); 
     } catch (NoSuchFieldException e) { 

     } 
     return null; 
    } 

    public class FieldAnnotationResolver { 

     private Field field; 

     public FieldAnnotationResolver(Field field) { 
      this.field = field; 
     } 

     SizeAnnotationResolver getSize() { 
      return new SizeAnnotationResolver(field.getAnnotationsByType(Size.class)[0]); 
     } 
    } 

    public class SizeAnnotationResolver { 

     Size size; 

     public SizeAnnotationResolver(Size size) { 
      this.size = size; 
     } 

     public int getMin() { 
      return size.min(); 
     } 

     public int getMax() { 
      return size.max(); 
     } 

    } 

} 
+0

クラスにまたはどこかのどちらかそれを一定に保つことができますありがとうおとこ。実際に私はあなたのようなクラスをすでに開発していましたが、もっと簡単な方法があるのか​​どうか疑問に思っていました... – MDP

1

別の方法は、あなたの注釈に使用するであろうという定数を作成することである:

public class User {  

    public static final int SIZE_NAME_MIN = 2; 

    public static final int SIZE_NAME_MAX = 20; 

    @Size(min = SIZE_NAME_MIN, max = SIZE_NAME_MAX) 
    private String name; 
} 

あなたは

関連する問題