用自定义模板 grails 上的普通字段替换 <f:all /> 标记
Posted
技术标签:
【中文标题】用自定义模板 grails 上的普通字段替换 <f:all /> 标记【英文标题】:replace <f:all /> tag with normal fields on custom template grails 【发布时间】:2016-03-11 09:43:28 【问题描述】:我在 grails 3 中安装模板,文件在 src/main/templates/scaffoldind 工作正常,但使用标签
<f:all bean="$propertyName"/>
我需要在所有输入上使用 bootsrap twitter 类,并且 f:all 标签不允许此功能,因此我需要将标签替换为单个字段,例如:
<%
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:all 标记替换为正常输入或将类“form-control”添加到所有 f:all 输入
【问题讨论】:
嗨,你能解决这个问题吗?您能否分享代码,因为以下建议的方法似乎对我不起作用。 【参考方案1】:如果您想让<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>
...
<%
%>
通过调用<f:all />
标记在您的脚手架 gsp 中位。
参见文档here
【讨论】:
它有效,但我尝试使用。当我试图显示所有属性(不进行编辑)时,这对 <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)。
【讨论】:
以上是关于用自定义模板 grails 上的普通字段替换 <f:all /> 标记的主要内容,如果未能解决你的问题,请参考以下文章