ссылка напрямую на GSP - PullRequest
       11

ссылка напрямую на GSP

13 голосов
/ 31 января 2010

В GSP возможно ли создать прямую ссылку на другой GSP? Я знаю, что могу использовать:

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

и в UserController определите действие foo, чтобы просто показать соответствующий GSP

class UserController {
    def foo = {}
}

Но есть ли способ достичь того же результата, не создавая пустое действие foo?

Спасибо, Дон

Ответы [ 3 ]

25 голосов
/ 31 января 2010

Тег createLink предназначен для использования с действиями контроллера и не будет выполнять то, что вы хотите, вне атрибута url.

Вы всегда можете получить доступ к gsp напрямую: /user/foo.gsp с комбинацией тегов link и resource .

<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 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>
13 голосов
/ 31 января 2010

Атрибут uri недокументирован , но вы можете увидеть его в источнике :

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

НТН

0 голосов
/ 07 декабря 2016

Начиная с Grails 2.x, это невозможно. Возможность напрямую ссылаться на .gsp была уязвимостью, которую можно было использовать, чтобы избежать аннотации @Secured. Метод отображения URL все еще работает, хотя, как видно из ответа @Colin Harrington.

См .: GRAILS-7542: представления доступны через шаблон URL

...