可以动态设置小部件约束吗?

时间:2012-11-27 13:14:16

标签: grails-2.0

我正在为grails设计动态表单,我想知道是否可以动态设置窗口小部件约束?

1 个答案:

答案 0 :(得分:1)

设置窗口小部件约束不是攻击它的方法。我想最简单的方法是根据视图或模板中使用“if”标记的某些条件选择要显示的标记。例如:

说你有一本书

class Book {

    String name

}

如果您对此类使用Grails generate-view,Grails将生成一个名为_form的模板,如下所示:

<div class="fieldcontain ${hasErrors(bean: bookInstance, field: 'name', 'error')} ">
    <label for="name">
        <g:message code="book.name.label" default="Name" />

    </label>
    <g:textField name="name" value="${bookInstance?.name}"/>
</div>

您可以在此表单中测试您的情况并更改视图:

<div class="fieldcontain ${hasErrors(bean: bookInstance, field: 'name', 'error')} ">
        <label for="name">
            <g:message code="book.name.label" default="Name" />

        </label>

            <g:if test="$yourCondition">
                <g:textField name="name" value="${bookInstance?.name}"/>
            </g:if>
            <g:else>
                <g:textArea name="name"  value="${bookInstance?.name}"/>
            </g:else>
    </div>

现在,视图将根据$ yourCondition显示textField或textArea字段。