如何在play框架模板中读取注释值?

时间:2011-04-09 10:39:16

标签: java playframework

我想在CRUD模块模板中使用注释中的值来使用HTML5函数。

e.g。

@Range(min = 0,max = 10)

public int size;

CRUD模块使用views / tags / crud / numberField.html显示数字字段:

#{field 'object.' + _name}
    <label for="${field.id}">
        &{_name}
    </label>
    <input id="${field.id}" type="text" name="${field.name}" value="${params[field.name]?.escape()?.raw() ?: field.error?.message == 'validation.required' ? '' : _value?.escape()?.raw()}" size="5" />
    #{ifError field.name}
        <span class="error">${field.error}</span>
    #{/ifError}
#{/field}

如何从注释读取最小/最大值,然后在&lt; input&gt;中输出为min =“0”max =“0” ?

3 个答案:

答案 0 :(得分:2)

您可以通过向CRUD模块的CRUD.ObjectType.ObjectField内部类添加方法来读取注释值,例如:类似的东西:

public String getRangeMin() {
    if (!property.field.isAnnotationPresent(Range.class)) {
        return null;
    }
    return property.field.getAnnotation(Range.class).min();
}

然后在crud/views/tags/crud/form.html中,您可以在#{if field.type == 'number'}内的新标记参数中使用此功能(请注意field此处为CRUD.ObjectType.ObjectField

#{crud.numberField min:field.min …

然后,_min标记内的值numberField.html可用。

答案 1 :(得分:1)

你必须为此写一个FastTag。由于这是所有Java,因此您可以使用反射来查询对象中的注释。如果您想独家使用它进行验证,可以让html5validation模块为您执行此操作。

答案 2 :(得分:0)

中包含的验证示例中的

,示例#7包含一些Jquery代码,用于读取类中的注释并将其用于Javascript验证。我相信这应该对你有所帮助。