【问题标题】:Grails 3 Fields Plugin - display property values in place of hasMany Object:id using f:display tagGrails 3 Fields Plugin - 使用 f:display 标签显示属性值代替 hasMany Object:id
【发布时间】:2015-10-09 02:10:15
【问题描述】:

我有一个名为 Project 的域,具有类似的 hasMany 关系

class Project {
    static hasMany = [prefixes: Prefix] 
}

在使用 <f:display bean="project" /> 的项目 show.gsp 中,前缀列表显示 id 类似于 com.example.Prefix:1

我想用更有意义的东西来替换它,方法是将“数字”和“名称”等前缀的两个属性用连字符连接起来。在没有 Fields 插件的 Grails 2 中,我会做这样的事情:

<ol>
...
  <li class="fieldcontain">
  <span id="prefixes-label" class="property-label">
  <g:message code="prefixes.label" default="Prefixes" /></span>

  <g:each in="${project.prefixes}" var="p">
    <span class="property-value" aria-labelledby="prefixes-label">
    <g:link controller="prefix" action="show" id="${p.id}">${p.number} - ${p.name}</g:link></span>
   </g:each>
  </li>
...
</ol>

我已经尝试使用上面的代码创建 grails-app/views/project/show/_displayWrapper.gsp,除了将 'project' 替换为 'bean' 和 show.gsp 中的 &lt;f:display bean="project"&gt;,但我仍然得到默认值页面。

如何使用&lt;f:display bean="project"&gt; 样式标签来实现这一点?

谢谢, 卡尔

【问题讨论】:

    标签: grails


    【解决方案1】:

    我通过为我的常规属性创建一个默认的 views/project/show/_displayWrapper.gsp 来让它工作:

    <li class="fieldcontain">
        <span id="${label}" class="${label}"><g:message code="${label}" default="${label}" /></span>
        <span class="property-value" aria-labelledby="${label}"><g:fieldValue bean="${project}" field="${property}"/></span>
    </li>
    

    我的 hasMany 前缀在views/project/show/prefixes/_displayWrapper.gsp 中有一个特定的

    <li class="fieldcontain">
        <span id="${label}" class="${label}"><g:message code="${label}" default="${label}" /></span>
        <g:each in="${value}" var="p">
            <span class="property-value" aria-labelledby="${label}"><g:link controller="prefix" action="show" id="${p.id}">${p.number} - ${p.name}</g:link></span>
        </g:each>
    </li>
    

    然后在我的 show.gsp 中我替换了

    <f:display bean="project" />
    

    <ol class="property-list">
        <f:display bean="project" property="number"/>
        <f:display bean="project" property="name"/>
        ...
        <f:display bean="project" property="prefixes"/>
    </ol>
    

    【讨论】:

    • 你能解释一下你在这些 ${label} 值中放了什么吗??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多