使用 Grails 快速开发 Web 应用程序--定制页面

 

前面的章节中所实现的功能大都是 Grails 自动生成了页面,这一节中,我们将对 Grails 自动生成的页面进行定制,以创建一个高级搜索的功能。

Gralis 自动生成的页面会显示 Domain 类的第一个字段,但我们并不需要它显示 id 字段,所以分别去掉 grails-app/views/member/list.gsp 和 grails-app/views/team/list.gsp 的 id 列。这是最基本的 html 代码,就不在此累述了。接下来,我们为 Team 的 list 页面添加一个 Show Member 和一个 Add Member 的 Link,代码如下:

<g:each in="${teamList}" status="i" var="team">
<tr class="${(i % 2) == 0 ? 'odd' : 'even'}">
<td>${team.teamName?.encodeAsHTML()}</td>
<td>${team.foundDate?.encodeAsHTML()}</td>
<td>
<g:link action="show" id="${team.id}">Show Members</g:link>
</td>
<td>
<g:link controller="member" action="create" params="['team.id':team.id]">
Add Members
</g:link>
</td>
</tr>
</g:each>

第一个 Link 使用了传单个 id 的方法,会生成如下的链接: /Contact/team/show/1(假定 team.id 的值是 1)。它会跳转到显示单个 Team 的页面,该页面提供了对 Team Member 的列表显示。

第二个 Link 使用了 params 属性,会生成如下链接:/Contact/member/create?team.id=1(假定 team.id 的值是 1)。这里的参数名使用了一个小小的技巧,MemberController 的 create Action 代码如下:

def create = {
def member = new Member()
member.properties = params
return ['member':member]
}

执行完 member.properties = params 后,member.team.id 会被赋值为 Link 传入的值。而在相应页面(grails-app/views/member/create.gsp)上的 g:select 标签上,有一个写表单的操作:

<g:select 
optionKey="id"
from="${Team.list()}"
name='team.id'
value="${member?.team?.id}" >
</g:select>

这就能保证但每次点击 Add Member 进入到 Create Member 页面后,在下拉列表中能够自动默认显示对应的 Team。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值