2010-01-31 114 views
13

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

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

,并在UserController中定义foo的行动只是显示相应的GSP

class UserController { 
    def foo = {} 
} 

但有什么办法可以达到同样的效果,而无需创建空foo操作?

谢谢, 唐

回答

25

createLink tag是面向与控制器操作使用,而你是想url属性之外什么也不会做。

您总是可以通过/user/foo.gsp直接获得gsp,结合linkresource标签。

<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标签使用它:

<link:userFoo>User Foo</link:userFoo> 

<g:link mapping="userFoo">User Foo</g:link> 
13

有一个uri属性这是undocumented,但你可以看到它在source

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

HTH

+0

嘿戴夫,路径是什么?我试过“/views/p.gsp”和“grails-app/views/p.gsp”都没有工作。 – 2014-08-12 14:20:39

+0

删除/ views /你的路径,只是做p#而不是p.gsp,它应该解决。 – 2014-10-23 19:59:23