2016-08-16 58 views
1

我有一個Spring MVC Web應用程序,我使用JPA和Hibernate註釋(以及我自己的自定義註釋)。 比方說,我有這樣的對象:如何在JSP頁面中檢索POJO字段的註釋(JPA和Hibernate)

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

有沒有辦法從一個jsp頁面讓我對象的註釋值? 類似於

${User.name.Size.min} 

我希望我已經清楚。

預先感謝您

回答

1

聽起來像是你不應該這樣做,但是這可能讓你開始。我會創建另一個類的反思。 jsp將通過獲取器來查找屬性。

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; 
} 

你可以保留不變無論是在課堂上或其他地方