Problema para direcionar para uma view
04/10/2011 15:28
0
Galera é o seguinte, sou iniciante do iniciante em Grails, e estou tendo um problema que acho que deve ser besta, mas não consigo resolver, vamos lá:

Estou seguindo um exemplo do livro "The Definitive Guide to Grails" 2º Ed.
Esta possui uma página de Login


<div id="loginBox" class="loginBox">
<g:if test="${session?.user}">
<div style="margin-top:20px">
<div style="float:right;">
<a href="#">Profile</a> |
<g:link controller="user" action="logout">Logout</g:link><br>
</div>
Welcome back
<span id="userFirstName">${session?.user?.firstName}!</span>
<br><br>
You have purchased (${session.user.purchasedSongs?.size() ?: 0}) songs.<br>
</div>
</g:if>
<g:else>
<g:form
name="loginForm"
url="[controller:'user',action:'login']">
<div>Username:</div>
<g:textField name="login" ></g:textField>
<div>Password:</div>
<g:passwordField name="password" />
<input type="submit" value="Login" />
</g:form>
<g:renderErrors bean="${loginCmd}"></g:renderErrors>
</g:else>
</div>

<div id="navPane">
<g:if test="${session.user}">
<ul>
<li><g:link controller="user" action="music">My Music</g:link></li>
<li><g:link controller="store" action="shop">The Store</g:link></a></li>
</ul>
</g:if>
<g:else>
<div id="registerPane">
Need an account?
<g:link controller= "user" action="register" >Signup now</g:link>
to start your own personal Music collection!
</div>
</g:else>
</div>

O problema é o seguinte, quando eu clicasse no link Signup now, era pra redirecionar para a seguinte página:

<html>
<body id="body">
<h1>Registration</h1>
<p>Complete the form below to create an account!</p>
<g:hasErrors bean="${user}">
<div class="errors">
<g:renderErrors bean="${user}"></g:renderErrors>
</div>
</g:hasErrors>
<g:form action="register" name="registerForm">
<div class="formField">
<label for="login">Login:</label>
<g:textField name="login" value="${user?.login}" />
</div>
<div class="formField">
<label for="password">Password:</label>
<g:passwordField name="password"
value="${user?.password}"/>
</div>
<g:submitButton class="formButton"
name="register"
value="Register" />
</g:fo
</html>

Porém, o link não redireciona de jeito nenhum... Da erro 404
type Status report

message /gTunes/user/register

description The requested resource (/gTunes/user/register) is not available.
Tags: redirecionar, view, resource, available, 404, link


0
Oi Andrei, tem como você postar aqui as actions relacionadas?


0
Beleza, as actions são:
def register = {
if(request.method == 'POST') {
def u = new User(params)
if(u.password != params.confirm) {
u.errors.rejectValue("password", "user.password.dontmatch")
return [user:u]
}
else if(u.save()) {
session.user = u
redirect(controller:"store")
}
else {
return [user:u]
}
}

}
def login = { LoginCommand cmd ->//A ação de login
if(request.method == 'POST') {
if(!cmd.hasErrors()) {
session.user = cmd.getUser()
redirect(controller:'store')
}
else {
render(view:'/store/index', model:[loginCmd:cmd])
}
}
else {
render(view:'/store/index')
}
}
05/10/2011 18:44


0
Beleza, as actions são:
def register = {
if(request.method == 'POST') {
def u = new User(params)
if(u.password != params.confirm) {
u.errors.rejectValue("password", "user.password.dontmatch")
return [user:u]
}
else if(u.save()) {
session.user = u
redirect(controller:"store")
}
else {
return [user:u]
}
}

}
def login = { LoginCommand cmd ->//A ação de login
if(request.method == 'POST') {
if(!cmd.hasErrors()) {
session.user = cmd.getUser()
redirect(controller:'store')
}
else {
render(view:'/store/index', model:[loginCmd:cmd])
}
}
else {
render(view:'/store/index')
}
}
05/10/2011 18:55


0
Oi Andrei,

pelo que vi, boa parte do problema está no fato de você estar incluindo na sua lógica do controlador o fato de uma action estar sendo acessada via POST ou GET.

Dica: crie actions separadas para cada caso. Assim a coisa fica mais tranquila para que você dê manutenção.



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto