#grails
#grails
Вопрос:
Я создаю приложение, которое настраивается на основе-definitive-guide-to-grails окончательного руководства по grails
В этом я использовал пользовательский URL для перенаправления на контроллер хранилища, который
UrlMappings.groovy
class UrlMappings {
static mappings = {
"/"(controller:"store")
}
}
поэтому, когда я запускаю приложение, оно подключается к контроллеру хранилища по умолчанию
и у меня есть класс пользовательского домена, а также класс UserController, в которых есть действия register и login
User.groovy
class User {
String login
String password
...
}
UserController.groovy
class userController.groovy
{
def register(){
...}
def login(){
..}
StoreController.groovy
class StroeController{
def index(){
..}
Пользовательский контроллер имеет соответствующие страницы просмотра в user / register.gsp и store / index.gsp
the
store/index.gsp is
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<meta name="layout" content="main"/>
<title>gTunes Store</title>
</head>
<body id="body">
Your Online music store and storage service!
<p>Manage your own library, browse music and purchase new tracks as
they become available</p>
</body>
</html>
и я хочу отобразить страницу входа во все приложение, я разместил поля для входа и пароля в main.gsp, который находится под
layouts/main.gsp
main.gsp is
<g:form name="loginForm" url="[controller:'user',action:'login']">
Username:
<g:textField name="login"
value="${fieldValue(bean:loginCmd, field:'login')}">
</g:textField><br>
Password:
<g:passwordField name="password"></g:passwordField>
<br/>
<input type="image"
src="${createLinkTo(dir:'images', file:'login-button.gif')}"
name="loginButton" id="loginButton" border="0"></input>
</g:form>
<g:link controller="user" action="register" >Signup now</g:link>
to start your own personal Music collection!
приведенный выше main.gsp содержит форму, в которой есть текстовое поле для входа в систему и текстовое поле пароля и кнопка, и Она также содержит тег ссылки, который используется для процесса регистрации, когда я запускаю приложение, приложение переходит на страницу индекса по умолчанию контроллера хранилища, основанную на сопоставлении URL-адресов по умолчанию, и эта страница индекса также содержит текстовое поле для входа в систему и поля пароля и кнопку входа, а также содержит ссылку регистрации, когда я нажал кнопку входа, она работает нормально, но при нажатии на ссылку регистрации она не переходит на страницу регистрации пользовательского контроллера, хотя register.gsp и пользовательский контроллер содержат действие register, но когда я удаляю код «/» (controller: «store») из класса сопоставлений url, затем я запускаю приложение, приложение, показывающее список контроллеров, я нажал на контроллер магазина, оно переходит на страницу индекса, в которой я нажал ссылку регистрации, чтобы зарегистрироваться, теперь ссылка работает нормально, она переходит на страницу регистрации gsp пользовательского контроллера, но она не работала, когда я использовал приведенное выше пользовательское сопоставление URL
Ответ №1:
Вам необходимо добавить сопоставление «по умолчанию» перед вашим пользовательским сопоставлением,
"/$controller/$action?/$id?"{ constraints {
// apply constraints here
} }
Это сопоставление:
"/"(controller:"store")
только сопоставляет «/» поэтому любой запрос будет отправлен на контроллер хранилища, потому что у вас нет другого правила, поэтому, если вы попытаетесь получить доступ к / user / login, он попытается выполнить поиск пользовательского представления в контроллере хранилища.
Ответ №2:
Попробуйте это..У меня это работает.(Grails 2.4.5 / java 8 и java 7)
class UrlMappings {
static mappings = {
"/$controller/$action?/$id?"{
// apply constraints here
}
"/intialize/$id?" (controller: "xyz") {
action = [GET:"abc"]
}
"/checksession" (controller: "xyz") {
action = [GET:"mno"]
}