13

在 GSP 中,是否可以创建到另一个 GSP 的直接链接?我知道我可以使用:

<g:createLink controller="user" action="foo"/>

并在 UserController 中定义 foo 动作以显示相应的 GSP

class UserController {
    def foo = {}
}

但是有什么方法可以在不必创建空foo动作的情况下达到相同的结果?

谢谢,唐

4

3 回答 3

25

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>
于 2010-01-31T07:16:52.950 回答
13

有一个未记录的 uri 属性,但您可以在源代码中看到它:

<a href="${createLink(uri:'/path/page.gsp')}">link</a>

高温高压

于 2010-01-31T15:48:49.790 回答
0

从 Grails 2.x 开始,这是不可能的。直接链接到 .gsp 的能力是一个安全漏洞,可以用来避免@Secured注释。尽管如@Colin Harrington 的回答所示,URL 映射方法仍然有效。

请参阅:GRAILS-7542:可通过 URL 模式访问视图

于 2016-12-07T14:44:47.233 回答