用自定义模板 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】:

如果您想让&lt;f:all /&gt; 呈现的所有字段看起来漂亮且易于引导,您需要为它们创建_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>
...
<%

%>

通过调用&lt;f:all /&gt; 标记在您的脚手架 gsp 中位。

参见文档here

【讨论】:

它有效,但我尝试使用。 on _wrapper.gsp 返回错误 你能举个例子的代码吗?请 嘿 rcgeorge23,我对 Grails 比较陌生......可以举一些例子 _wrapper.gsp,_widget.gsp, _displayWrapper.gsp, _displayWidget.gsp 另外,如果我创建这些通用模板 gsp,然后尝试为域类生成视图,那么 f:all 标记是否会出现在生成的编辑中并创建 gsp? 我从哪里获得 _displayWrapper.gsp 的样本?【参考方案2】:

当我试图显示所有属性(不进行编辑)时,这对 &lt;f:display bean="$propertyName" /&gt; 不起作用,所以这是我为使其正常工作所做的工作,我创建了两个文件,第一个 /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 /> 标记的主要内容,如果未能解决你的问题,请参考以下文章

Grails Fields插件显示的自定义字段

用自定义视图替换字符串

用自定义函数替换 Print 语句调用

如果用自定义子类替换默认视图,cornerRadius 不起作用

php 用自定义徽标替换仪表板WordPress徽标

是否可以用自定义 UI 替换 Android 的内置 Caller?