Enviar parametro para o create
06/03/2012 00:50
0
Boa noite pessoal! De antemão digo que sou inciante em Grails e estou com uma duvida agora...
Criei a classe usuario e a classe carro que precisa de um usuario para ser criada...
o que quero é que quando eu estiver no show.gsp do usuario tenha um link para cadastrar novo carro... a questão éh... preciso enviar o id do usuario para o dono_id que está na classe carro...

<g:link controller="carro" action="create" id="${carroInstance?.id}">add carro</g:link>

outro detalhe é que a gsp create naum estah preparada pra receber nenhum parametro...
alguem teria uma sugestao...
Tags: parametros, create


0
cara, tu pode mandar para a action usando o atributo 'params' da tag g:link

<g:link controller='carro' action='create' params='[dono:"${carroInstance?.id}"]'>add carro</g:link>


na action é só recuperar o parâmetro que foi passado através da variável params no teu controller

def donoId = params.dono


06/03/2012 02:07


0
Bom lucas... fiz da forma q vc falow... porem deu a seguinte mensagem de erro:
Failed to convert property value of type java.lang.String to required type forata.Usuario for property dono; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [forata.Usuario] for property dono: no matching editors or conversion strategy found

a url ficou da forma padrao q ja conheco...
localhost:8080/Forata/automoveis/create?dono=6

e entaum...


0
então na action tu recuperou o id com o params.dono, essa exceção ocorreu porque tu tentou atribuir um valor inválido ao teu atributo.

tu pode o fazer o seguinte

 
def donoId = params.dono.toLong() // converte para long
def dono = Usuario.get(donoId) // recupera um usuário


com isso tu vai ter um instância de usuário pra fazer o que quiser, no caso atribuir à classe carro, certo?
06/03/2012 04:50


0
Estou com o mesmo problema do Caetano, fiz as alterações sugeridas, mas continua dando o mesmo erro
08/03/2012 18:10


0
Cara, posta tuas duas Domains para darmos uma olhada e posta também a Action que está recebendo a requisição.
08/03/2012 19:16


0
class EstoquePneu {

Date data
Pneu pneu
String procedencia

static constraints = {
}
}

class LocalPneu {

ParteConjunto parteConjunto
Pneu pneu
String posicao

String toString(){"${parteConjunto} Posição: ${posicao} Pneu: ${pneu}"}

static constraints = {
}
}

Do estoque, eu quero passar o pneu como parametro para o local onde ele vai ser aplicado, para isso eu fiz a seguinte action na classe EstoquePneu:

def enviar = {
def estoquePneuInstance = EstoquePneu.get(params.id)
redirect(controller:"localPneu", action:"create", params[pneu:estoquePneuInstance.pneu])
}

e a action que recebe é a seguinte:

def create = {
def localPneuInstance = new LocalPneu()
localPneuInstance.properties = params
def pneu = params.pneu.toLong()
def pneuId = LocalPneu.get(pneu)
return [localPneuInstance: localPneuInstance]
}

Vlw!

08/03/2012 19:52


0
Arthur,

ao invés de passar a intância da classe Pneu na action "enviar" passa apenas o id


def eviar = {
def estoquePneuInstance = EstoquePneu.get(params.id)
def pneuId = estoquePneuInstance.pneu.id
redirect(controller:'localPenu", action:'create', params[pneuId:pneuId])
}


e na action create tu recupera assim:



def create = {
def localPneuInstance = new LocalPneu()
return [localPneuInstance:localPneuInstance, pneuId:params.pneuId]
}


10/03/2012 21:07


0
Reavivando o tópico....

Meu caso é bem semelhante ao do Carro e Dono. Tenho as classes Índice e Valor, onde através da classe índice quero adicionar um valor mensal.

Portanto no formulário do índice, crio o seguinte link:

<g:link class="property-value" controller="valor" action="create" params="[indice: indice?.id]">


E no controller da classe Valor, no método Create, deixo da forma original

def create() {
[valorIndiceJuroMensalInstance: new ValorIndiceJuroMensal(params)]
}


Porém ocorre seguinte erro:
Failed to convert property value of type java.lang.String to required type sistema.Indice for property indice; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [sistema.Indice] for property indice: no matching editors or conversion strategy found

Tentei proceder da forma como lucasaquiles indicou. A mensagem de erro não aparece mais, porém não dá efeito nenhum, como se eu não passasse nada por parâmetro.

Alguém tem alguma ideia de como resolver isto?


0


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