我有一个名为Project的域,其中包含hasMany关系,如
class Project {
static hasMany = [prefixes: Prefix]
}
在使用<f:display bean="project" />
的项目show.gsp中,前缀列表显示id,如com.example.Prefix:1
我希望通过将前缀的两个属性(例如'number'和'name'连接在一起,用一个连字符)替换为更有意义的东西。在没有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,除了用'bean'替换'project'和show.gsp中的<f:display bean="project">
,但我仍然有默认页面。
如何使用<f:display bean="project">
样式标记来实现此目的?
谢谢, 卡尔
答案 0 :(得分:5)
我通过为常规属性创建默认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>
在views / project / show / prefixes / _displayWrapper.gsp中我的hasMany前缀的特定前缀
<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>