2011-04-09 85 views
2

我想使用CRUD模块模板中的注释值来利用HTML5函数。如何读取播放框架模板中的注释值?

例如

@range(分钟= 0,最大值= 10)

公众诠释大小;

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} 

我怎样才能读min,从注释然后输出为min = “0” 最大值=“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'}内(注意,fieldCRUD.ObjectType.ObjectField这里:

#{crud.numberField min:field.min … 

值则可以作为_minnumberField.html标签。

1

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

0

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