Ссылка непосредственно на GSP

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

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

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

class UserController {
    def foo = {}
}

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

Спасибо, Дон

Ответы

Ответ 1

createLink tag предназначен для использования с действиями контроллера и не будет делать то, что вы хотите, вне атрибута 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, вы можете создать 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>

Ответ 3

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

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