2008-08-26 3 views
29

Что такое настройка конфигурации для изменения главной страницы по умолчанию в приложении Grails, которая больше не будет appName/index.gsp? Конечно, вы можете настроить эту страницу как перенаправление, но должен быть лучший способ.Как изменить домашнюю страницу по умолчанию в приложении Grails?

ответ

10

Редактировать UrlMappings.groovy

Добавить к примеру добавить это правило, чтобы обработать корень с HomeController.

"/" (контроллер: 'дом')

+1

работали для меня, под Грааль 1.3.7, с действием: ключ. – jerseyboy 2012-04-05 01:45:59

53

Добавить это в UrlMappings.groovy

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

Конфигурируя URLMappings таким образом, домашняя страница приложения будет yourWebApp/yourController/yourAction.

(вырезать/вставить из IntelliGrape Blog)

+0

Возможно, метод был изменен в последующих версиях Grails, поскольку он не работает на 1.3.7. Используя синтаксис, отправленный daherman, работал на меня. – jerseyboy 2012-04-05 01:45:40

2

Простые и аккуратные

  1. Перейти к Файл: Grails-приложение/CONF/UrlMappings.groovy.

  2. Заменить строку: "/" (посмотреть: "/ index") с помощью "/" (контроллер: 'home', action: "/ index").

Главные Твоя контроллер для запуска (как в весенней безопасности, вы можете использовать «логин») и действие является Grails просмотр страницы, связанной с контроллером (в Spring Security «/ авт»).

Добавить перенаправление страниц в соответствии с вашими требованиями приложения.

11

Вы можете попробовать следующие
в классе UrlMappings.groovy, которая находится внутри папки конфигурации:

class UrlMappings { 

    static mappings = { 

     "/$controller/$action?/$id?"{ 
      constraints { 
       // apply constraints here 
      } 
     } 

     //"/"(view:"/index") 
     "/" (controller:'Item', action:'index') // Here i have changed the desired action to show the desired page while running the application 
     "500"(view:'/error') 
    } 
} 

надеюсь, что это помогает,
Рубель

0

Все ответы правильны! Но давайте представим себе сценарий:

Я сопоставил путь «/» с контроллером: «Главная» и действие: «индекс», поэтому, когда я обращаюсь к «/ app-name /», контроллер Home запускается, но если я набираю путь «/ app-name/home/index», он все равно будет выполнен! поэтому есть два пути для одного ресурса. он будет работать до тех пор, пока не будет найден путь «домашний/индексный».

Другое дело, если у меня есть форма без указанного атрибута действия, поэтому по умолчанию это будет POST для того же контроллера и действия! поэтому, если форма отображается на путь «/» и не указан атрибут действия, она будет отправлена ​​на тот же контроллер, но на этот раз путь будет «home/index» в вашей адресной строке, а не «/», потому что он передается контроллеру/действию не в URI.

Чтобы решить эту проблему, вам нужно удалить или прокомментировать эти строки.

//  "/$controller/$action?/$id?(.$format)?"{ 
//   constraints { 
//    // apply constraints here 
//   } 
//  } 

Итак, теперь, когда вы получаете доступ к «/», это сработает. но «home/index» не будет.Но есть один недостаток, теперь вам нужно вручную сопоставить все пути к контроллерам, явно записав в файл URLMapping. Думаю, это поможет!

2

Используйте контроллер, вид и параметры действия следующего синтаксисом:

class UrlMappings { 
    static mappings = { 
     "/" (controller:'dashboard', view: 'index', action: 'index') 
     "500"(view:'/error') 
    } 
} 
Смежные вопросы