【问题标题】:How to retrieve the annotations (JPA and Hibernate) of a field of a POJO in a JSP page如何在 JSP 页面中检索 POJO 字段的注释(JPA 和 Hibernate)
【发布时间】:2016-08-16 13:34:08
【问题描述】:

我有一个 Spring MVC Web 应用程序,我在其中使用 JPA 和 Hibernate 注释(加上我自己的自定义注释)。 假设我有这个对象:

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

有没有办法从 jsp 页面获取我的对象的注释值? 类似的东西

${User.name.Size.min}

我希望我已经清楚了。

提前谢谢你

【问题讨论】:

    标签: java spring hibernate jsp annotations


    【解决方案1】:

    听起来你不应该这样做,但这可能会让你开始。我会为反射创建另一个类。 jsp 将通过 getter 查找属性。

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

    【讨论】:

    • 谢谢你。实际上我已经开发了一个像你这样的类,但我想知道是否还有另一种更简单的方法......
    【解决方案2】:

    另一种方法是创建一个将在注释中使用的常量:

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

    你可以在课堂上或其他地方保持这个常数

    【讨论】:

      猜你喜欢
      • 2010-10-30
      • 1970-01-01
      • 2011-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-16
      • 1970-01-01
      • 2011-12-07
      相关资源
      最近更新 更多