Setar valores de um ComboBox por parâmetro
17/10/2010 01:00
0
Pessoal, como faço pra setar o valor de um combo já preenchido, através de um parâmetro passado em outra página?

Tenho uma classe Comentario possui vários Posts, que são mostrados através de um combo no formulário e tenho uma página home.gsp com a listagem de todos os posts e um link para adicionar os comentários aos posts.

Queria que ao clicar no link, ele redirecionasse para o formulário create do da classe comentário e o combo com os posts já estaria marcado o post em que foi requisitado o novo comentário.

Não sei se ficou claro, mas ai está o link criado:

<g&#58;link controller=&quot;comentario&quot; action=&quot;create&quot; params=&quot;[post&#58;vpost]&quot; >Adicionar Comentário</g&#58;link>
vpost é a variável que referencia a instancia do post.

Na teoria era pra dar certo, mas dá um erro de validação:

Failed to convert property value of type java.lang.String to required type br.enucomp.Post for property post; ...

já tentei umas 20 formas diferentes, até umas gambiarra. já tentei fazer isso setando o valor para outros campos, e deu certo <!-- s:? --><img src="{SMILIES_PATH}/icon_confused.gif" alt=":?" title="Confused" /><!-- s:? -->

Se alguém puder me ajudar, agradeço muito.
Tags: Grails


0
Bruno, bom dia.

Essa variável &quot;vpost&quot; veio de onde? Você poderia usar o &quot;id&quot; do seu Post para poder repassá-lo ao controller do Comentario. Dessa forma você pode usar o Post.get(params.post) e obter a informação que precisa.
Espero ter ajudado.
19/10/2010 00:00


0
ReubenCastro,

  <g&#58;each in=&quot;${postList}&quot; status=&quot;i&quot; var=&quot;vpost&quot;>
<div id=&quot;${ (i % 2) == 0 ? 'left' &#58; 'right'}&quot;>
<h2>${vpost.titulo}</h2>
<p align=&quot;justify&quot;> ${vpost.conteudo}</p>

<div id=&quot;notice&quot;>
<%System.out.println(vpost.get(1))%> //isso mostra exatamente o que é pra ser setado no combo
<p><g&#58;link controller=&quot;comentario&quot; action=&quot;create&quot; params=&quot;[post&#58;vpost.get(1)]&quot; >Adicionar Comentário</g&#58;link></p>
</div>

</div>
</g&#58;each>


O vpost é a variável do each;
O post se refere ao combo contendo os posts. Isso no formulário de criação de um Comentario


Já tentei até desa forma que eu coloquei ai, &quot;roubando&quot;, mesmo assim ele não aceita e o mesmo erro persiste:

Failed to convert property value of type java.lang.String to required type br.Post for property post; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [br.Post] for property post: no matching editors or conversion strategy found


Não sei como tratar esse combo. Ele sempre aparece selecionado com o primeiro da lista. Teria alguma forma de eu percorrer essa lista e escolher um valor por parâmetro, por exemplo?
19/10/2010 00:00


0
Bruno, tudo bom?

Na verdade acho que me expressei errado. O Post.get() deveria ser usado no Controller mas acho que temos uma forma mais fácil de resolver seu problema. Tente usar assim:


<g&#58;link controller=&quot;comentario&quot; action=&quot;create&quot; params=&quot;[post.id&#58;${vpost.id}]&quot; >Adicionar Comentário</g&#58;link>


Fico esperando seu retorno. Abraço!
19/10/2010 00:00


0
Olá ReubenCastro,

[quote=&quot;ReubenCastro&quot;]...acho que temos uma forma mais fácil de resolver seu problema. Tente usar assim:

<g&#58;link controller=&quot;comentario&quot; action=&quot;create&quot; params=&quot;[post.id&#58;${vpost.id}]&quot; >Adicionar Comentário</g&#58;link>
[/quote]

Tentei isso, mas gera uma exceção por causa do post.id. Acho que o essa chave é como se fosse um post.setText &quot;${vpost.id}&quot;, algo assim...

Como seria a forma usando o Post.get() no Controller que você mencionou?
Abração
19/10/2010 00:00


0
Fala Bruno.

Qual exceção que está ocorrendo? Posta ela aí para que eu possa dar uma olhada. Com relação a usar o Post.get() você poderia fazer isso lá no create do controller do Comentario. Você trataria o valor que está chegando nesse parâmetro e o enviaria para a sua tela de create.
Aguardo seu retorno.
19/10/2010 00:00


0
Reuben, beleza
Não tinha dado certo assim, como tinha dito antes, mas fiz umas mudanças e deu certo <!-- s:lol: --><img src="{SMILIES_PATH}/icon_lol.gif" alt=":lol:" title="Laughing" /><!-- s:lol: -->
[quote=&quot;ReubenCastro&quot;]
<g&#58;link controller=&quot;comentario&quot; action=&quot;create&quot; params=&quot;[post.id&#58;${vpost.id}]&quot; >Adicionar Comentário</g&#58;link>
[/quote]

Mudei para isso:

<g&#58;link controller=&quot;comentario&quot; action=&quot;create&quot; params=&quot;['post.id'&#58; vpost.id]&quot;>Adicionar Comentario</g&#58;link>


Então cara, valew pela a ajuda,
abração
20/10/2010 00:00


0
Que bom que funcionou.

Peço desculpas por não ter colocado o código certo da primeira vez. Codificar direto aqui sem debug é complicado. rsrsrs
Abraço!
20/10/2010 00:00



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