Как сопоставить URL-адреса просмотра в браузере с одним конкретным именем? - PullRequest
0 голосов
/ 12 мая 2011

M новичок в Grails, теперь моя проблема,

Я хочу, когда я просматриваю свое приложение вместо того, чтобы получить URL как http://localhost:8080/merchant/, я хочу отображать только: //localhost.

Точно так же, когда я просматриваю другие виды своего приложения, я получаю URL-адрес вроде http://localhost:8080/merchant/register/list, теперь я также не хочу, чтобы он отображал контроллеры приложений и имена действий, вместо этого я хочу, чтобы он отображал одно слово. быть списком или чем-то еще, что я хочу.

Я прошел через концепции URLMapping, но я не знаю, что именно делать. Я знаю, что должен изучить, понять, а затем спросить, есть ли сомнения, но у меня нет много времени. Так что, пожалуйста, кто-нибудь может сказать мне, что именно нужно сделать .

Заранее спасибо,

1 Ответ

3 голосов
/ 12 мая 2011

на самом деле, если у вас нет порта в URL-адресе, он принимает порт 80 по умолчанию. HTTP-серверы Apache работают на этом порту нормально.

Есть два разных способа добиться этого для приложения Grails, работающего на сервере Tomcat.

  • изменить порт сервера Tomcat (используйте параметр Dserver.port при запуске grails)
grails -Dserver.port=80 run-app
  • Или используйте сервер Apache http в качестве прокси-сервера для вашего сервера Tomcat.

http://www.unidata.ucar.edu/projects/THREDDS/tech/tds4.1/reference/TomcatBehindProxyServer.html


EDIT:

Во-вторых, с URL. Если я правильно понял ваш вопрос, вы хотите, чтобы представление списка было вашим представлением по умолчанию. Чтобы добиться этого, используйте следующее сопоставление URL (хотя и не тестировали):

static mappings = {
    "/$controller" {
       controller = "controller"
       action = "list"
    }
}

РЕДАКТИРОВАТЬ 2:

Вы хотите видеть только действие, а не имя контроллера.

  • это возможно только для одного контроллера. иначе, как бы Grails узнал, какое действие какого контроллера использовать.

  • вы можете определить свои действия, которые должны быть доступны без имени контроллера в URL вашего контроллера.

    1. сделать домашний контроллер

    2. установить следующее отображение

"/$action"
 {
    controller = "yourController"
    action = "action"
 }

Пожалуйста, имейте в виду, что все действия с индексами на других контроллерах ex. / controller не будет работать правильно, так как ожидает, что у вас есть действие с именем controller в вашем домашнем контроллере.


РЕДАКТИРОВАТЬ 3: Вы также можете определить отображение URL для каждого действия, которое вы хотите сделать доступным, без имени контроллера в URL. таким образом, действие не должно быть в вашем домашнем контроллере.

ex

"/myAction"
 {
    controller = "yourController"
    action = "myAction"
 }
...