2012-02-13 8 views
1

У меня есть сайт, который есть URL, похожий на этот:Grails URL отображения ошибок причина, по GSP

/mysite/admin/controller/action/id 
/mysite/search/controller/action/id 
/mysite/user/controller/action/id 

У меня есть URL отображение, как этот

"/$prefix/$controller/$action?/$id?"{ 
    constraints {} 
} 

я в состоянии добраться до контроллера правильно.

Но на стороне GSP

<g:link controller="controller">abc</g:link> ==> <a href="/mysite/controller/...">abc</a> 

Обратите внимание, как я теряю префикс между MySite и контроллером.

ответ

3

Вы можете использовать named url mappings, а затем передать prefix как часть Params:

URLMappings:

name prefix: "/$prefix/$controller/$action?/$id?"{ 
    constraints {} 
} 

GSP:

<g:link mapping="prefix" params="[prefix:$prefix, controller:...]">abc</g:link> 

Чтобы использовать sortableColumn, просто положить все из Параметры URLMapping в объекте params:

<g:sortableColumn property="col" title="title" params="[ prefix: 'prefix', controller:'controller', action:'action']" /> 
+0

Это работает для Churk

+0

Мой предыдущий комментарий был некорректен. Я удалил его и обновил свой ответ. –

0

Он работает, когда вы нажимаете URL-адрес в браузере, потому что префикс доступен в URL-адресе. Это не работает, если вы используете тег link для создания URL-адреса, потому что у grails нет информации о том, какой префикс должен использоваться для этого контроллера. Вам нужно будет указать значение для префикса для ссылки на тег.

Попробуйте

<g:link controller="controller" params="[prefix:'admin']">abc</g:link> 

в-короткий - Вы должны передать эти динамические переменные Params, если вы хотите ссылку переписывания, чтобы рассмотреть их. Подробнее docs here

+0

Я понимаю, что мне нужно передать params = "[prefix: 'admin']", что я пытаюсь сказать. Он работает только для тегов URL для этого переводит в/mysite/controller/action/id? prefix = admin, а мой префикс ушел в URL. – Churk

+0

В этом случае вам нужно будет изменить отображение URL-адресов, чтобы явно указать имя контроллера «/ admin/$ controller/$ action?/$ Id?» (Контроллер: «Admin») «/ search/$ controller/$ action?/$ id? "(контроллер:« Поиск ») –

+0

Да, я попытался это сделать, это была моя первая попытка, и она по-прежнему не сохраняет префикс. – Churk

Смежные вопросы