将<f:all>标记替换为自定义模板grails上的普通字段

时间:2015-12-06 20:47:53

标签: templates grails scaffold

我在grails 3中安装模板,文件在src / main / templates / scaffoldind中工作正常但是使用标签

<f:all bean="${propertyName}"/> 

我在所有输入和f上都需要一个bootsrap twitter类:所有标签都不允许这个功能,所以我需要用单个字段替换标签,例如:

    <%
    props.each{
    %>
    <f:field bean="${propertyName}" property="${it.name}">
     <g:textField name="${it.name}" value="${propertyName}?.${it.name}" class="form-control" />
    </f:field>
...
    <%
    }
    %>

我找到了这篇文章http://www.jakusys.de/blog/2008/12/grails-scaffolding-in-depth/,但是对于grails 2而不是grails 3,替换f的一些解决方案:正常输入的所有标记或添加类&#34;表单控制&#34;对所有f:所有输入

2 个答案:

答案 0 :(得分:2)

如果您希望<f:all />呈现的所有字段看起来都很漂亮,那么您需要为它们创建_field.gsp模板。

您可以通过创建这四个gsp片段来创建通用模板(用于所有字段):

_wrapper.gsp
_widget.gsp
_displayWrapper.gsp
_displayWidget.gsp

在此目录中:

grails-app/views/_fields/default/

然后您可以替换

<%
props.each{
%>
<f:field bean="${propertyName}" property="${it.name}">
 <g:textField name="${it.name}" value="${propertyName}?.${it.name}" class="form-control" />
</f:field>
...
<%
}
%>

在你的脚手架gsp中点击<f:all />标签。

请参阅文档here

答案 1 :(得分:2)

当我尝试显示所有属性(不进行编辑)时,<f:display bean="${propertyName}" />对我不起作用,所以这是我为了正常工作而做的,我创建了两个文件带有此模板的第一个/views/_fields/default/_displayWidget.gsp

<tr class="prop">
    <td valign="top" class="name">${label}</td>
    <td valign="top" class="value">${value}</td>
</tr>

以及使用此模板的第二个/views/templates/_fields/_list.gsp

<g:each in="${domainProperties}" var="p">
    ${body(p)}
</g:each>

实际上我只是覆盖原始模板_list.gsp(我使用grails v3.1)。