在GSP中,是否可以创建与另一个GSP的直接链接?我知道我可以使用:
<g:createLink controller="user" action="foo"/>
并在UserController中定义foo操作以显示相应的GSP
class UserController {
def foo = {}
}
但是,有什么方法可以在不创建空foo
动作的情况下获得相同的结果吗?
谢谢, 唐
答案 0 :(得分:25)
createLink tag适合与控制器操作一起使用,并且不会在url属性之外执行您想要的操作。
您可以直接通过/user/foo.gsp
结合link和resource标记来获取gsp。
<g:link url="${resource(dir:'user', file:'foo.gsp')}">user/foo.gsp</g:link>
您可以创建一个将请求直接映射到视图的URL映射。
class UrlMappings {
static mappings = {
"/user/foo"(view:"user/foo")
}
}
使用Grails 1.2,您可以创建一个直接映射到视图的named URL Mapping:
class UrlMappings {
static mappings = {
name userFoo: "/user/foo"(view:"user/foo")
}
}
然后将其与链接标记一起使用:
<link:userFoo>User Foo</link:userFoo>
或
<g:link mapping="userFoo">User Foo</g:link>
答案 1 :(得分:13)
答案 2 :(得分:0)
从Grails 2.x开始,这是不可能的。直接链接到.gsp的能力是一个安全漏洞,可用于避免@Secured
注释。尽管如@Colin Harrington的回答所示,URL映射方法仍然有效。