问题 -
我注意到我测试的一些应用程序从操作提交调用另一个视图/控制器,但是当呈现该页面时,而不是看到:
$控制器/$页面
我懂了:
$控制器/索引
这是 URL 映射配置的问题吗?默认操作?只是好奇,因为它似乎只是 URI 映射到默认值而不是实际操作。
查看代码:
<table>
..
<g:actionSubmit class="stats" action="stats" value="View Stats"/>
..
</table
控制器:
def stats() {
def teamId = Team.get(params.id)
def allPlayers = Player.withCriteria {
eq('team', teamId)
and {
eq('isActive', true)
}
}
[allPlayers:allPlayers, teamId:params.id]
}
网址映射:
class UrlMappings {
static mappings = {
"/$controller/$action?/$id?"{
constraints {
// apply constraints here
}
}
}
编辑
我实际上弄清楚了它是什么。这让我更加困惑。
grails actionSubmit 有一个与之相关的操作。那个表格只是一个普通的表格,没有调用:
<g:form>
<g:actionSubmit class="stats" action="stats" value="View Stats"/>
<g:actionSubmit class="schedule" action="schedule" value="View Schedule"/>
<g:form>
因此,默认情况下,表单会将操作重定向到 $controller/index。如果在 g:form 标记中添加操作调用,这两个按钮将指向正确的页面,但 URI 现在将是 $controller/$g:form_action。
如果需要 g:form 作为包装器,我想我不明白 actionSubmit 操作的重点。