在 GSP 中,是否可以创建到另一个 GSP 的直接链接?我知道我可以使用:
<g:createLink controller="user" action="foo"/>
并在 UserController 中定义 foo 动作以显示相应的 GSP
class UserController {
def foo = {}
}
但是有什么方法可以在不必创建空foo
动作的情况下达到相同的结果?
谢谢,唐
createLink标记适用于控制器操作,不会在 url 属性之外执行您希望它执行的操作。
您始终可以通过以下方式直接访问 gsp:/user/foo.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,您可以创建直接映射到视图的命名 URL 映射:
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>
从 Grails 2.x 开始,这是不可能的。直接链接到 .gsp 的能力是一个安全漏洞,可以用来避免@Secured
注释。尽管如@Colin Harrington 的回答所示,URL 映射方法仍然有效。