我有一个名为Project的域名,其中包含hasMany关系
class Project {
static hasMany = [prefixes: Prefix]
}
Run Code Online (Sandbox Code Playgroud)
在项目show.gsp中使用<f:display bean="project" />前缀列表显示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>
Run Code Online (Sandbox Code Playgroud)
我尝试使用上面的代码创建一个grails-app/views/project/show/_displayWrapper.gsp,除了用'bean'替换'project'和<f:display bean="project">show.gsp,但我仍然有默认页面.
如何使用<f:display bean="project">样式标签来实现此目的?
谢谢,卡尔
我通过为我的常规属性创建默认的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>
Run Code Online (Sandbox Code Playgroud)
并且在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>
Run Code Online (Sandbox Code Playgroud)
然后在我的show.gsp中我替换了
<f:display bean="project" />
Run Code Online (Sandbox Code Playgroud)
同
<ol class="property-list">
<f:display bean="project" property="number"/>
<f:display bean="project" property="name"/>
...
<f:display bean="project" property="prefixes"/>
</ol>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2069 次 |
| 最近记录: |