【问题标题】:Fields Plugin - Grails table字段插件 - Grails 表
【发布时间】:2016-07-24 20:35:41
【问题描述】:

我正在为 grails 使用字段插件并遇到问题,当我使用字符串列表搭建域类时,属性类显示如下 org.grails.datastore.mapping.dirty.checking.DirtyCheckingList

List view

这是我的域类

class Role {
 String id
 String role
 List<String> permissions

static constraints = {
 }
}

在其他视图中也出现为Show,

Show view

我想自定义模板以在表格和显示视图中显示权限列表,但我没有找到有关如何使用 f:all 标记和 f:table 标记自定义模板的信息

这里是索引页

<!DOCTYPE html>
<html>
<head>
    <meta name="layout" content="main" />
    <g:set var="entityName" value="${message(code: 'role.label', default: 'Role')}" />
    <title><g:message code="default.list.label" args="[entityName]" /></title>
</head>
<body>
    <a href="#list-role" class="skip" tabindex="-1"><g:message code="default.link.skip.label" default="Skip to content&hellip;"/></a>
    <div class="nav" role="navigation">
        <ul>
            <li><a class="home" href="${createLink(uri: '/')}"><g:message code="default.home.label"/></a></li>
            <li><g:link class="create" action="create"><g:message code="default.new.label" args="[entityName]" /></g:link></li>
        </ul>
    </div>
    <div id="list-role" class="content scaffold-list" role="main">
        <h1><g:message code="default.list.label" args="[entityName]" /></h1>
        <g:if test="${flash.message}">
        <div class="message" role="status">${flash.message}</div>
    </g:if>
    <f:table collection="${roleList}" />

    <div class="pagination">
        <g:paginate total="${roleCount ?: 0}" />
    </div>
</div>
</body>
</html>

还有展示页面

<!DOCTYPE html>
<html>
<head>
    <meta name="layout" content="main" />
    <g:set var="entityName" value="${message(code: 'role.label', default: 'Role')}" />
    <title><g:message code="default.show.label" args="[entityName]" /></title>
</head>
<body>
    <a href="#show-role" class="skip" tabindex="-1"><g:message code="default.link.skip.label" default="Skip to content&hellip;"/></a>
    <div class="nav" role="navigation">
        <ul>
            <li><a class="home" href="${createLink(uri: '/')}"><g:message code="default.home.label"/></a></li>
            <li><g:link class="list" action="index"><g:message code="default.list.label" args="[entityName]" /></g:link></li>
            <li><g:link class="create" action="create"><g:message code="default.new.label" args="[entityName]" /></g:link></li>
        </ul>
    </div>
    <div id="show-role" class="content scaffold-show" role="main">
        <h1><g:message code="default.show.label" args="[entityName]" /></h1>
        <g:if test="${flash.message}">
        <div class="message" role="status">${flash.message}</div>
    </g:if>
    <f:display bean="role" />
        <g:each var="permission" in="${role.permissions}">
        <li>${permission}</li>
        </g:each>
<g:form resource="${this.role}" method="DELETE">
<fieldset class="buttons">
    <g:link class="edit" action="edit" resource="${this.role}"><g:message code="default.button.edit.label" default="Edit" /></g:link>
    <input class="delete" type="submit" value="${message(code: 'default.button.delete.label', default: 'Delete')}" onclick="return confirm('${message(code: 'default.button.delete.confirm.message', default: 'Are you sure?')}');" />
</fieldset>
</g:form>
</div>
</body>
</html>

【问题讨论】:

    标签: grails scaffold


    【解决方案1】:

    &lt;f:table&gt;&lt;f:all&gt; 标签由 Fields Plugin 提供。您可以在此处找到它们的文档(这将很快从 Grails 文档中链接)http://grails-fields-plugin.github.io/grails-fields/guide/introduction.html

    您可能需要自定义脚手架模板以支持您正在执行的操作 - 我不确定 Fields 插件是否支持不属于 hasMany 的 List 属性。您可以通过生成模板(将它们添加到您的项目中)来自定义模板,详见此处:https://grails.github.io/grails-doc/latest/ref/Command%20Line/install-templates.html

    【讨论】:

    • 我认为这是一个问题,因为我使用 mongodb 进行持久性,有时我不需要关系 hasMany,我尝试自定义模板但它们使用相同的 &lt;f:table&gt;&lt;f:all&gt; 标签,所以我尝试自定义字段渲染that explains here 失败
    猜你喜欢
    • 2016-08-19
    • 2014-01-09
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    • 2015-11-01
    • 1970-01-01
    • 2015-12-05
    • 1970-01-01
    相关资源
    最近更新 更多