直接链接到GSP

时间:2010-01-31 02:52:12

标签: grails gsp

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

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

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

class UserController {
    def foo = {}
}

但是,有什么方法可以在不创建空foo动作的情况下获得相同的结果吗?

谢谢, 唐

3 个答案:

答案 0 :(得分:25)

createLink tag适合与控制器操作一起使用,并且不会在url属性之外执行您想要的操作。

您可以直接通过/user/foo.gsp结合linkresource标记来获取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)

有一个uri属性undocumented ,但您可以在source中看到它:

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

HTH

答案 2 :(得分:0)

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

请参阅:GRAILS-7542: Views are accessible via a URL pattern