我正在为grails设计动态表单,我想知道是否可以动态设置窗口小部件约束?
答案 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字段。