2016-08-16 62 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; 
} 

你可以保留不变无论是在课堂上或其他地方