Grails2.2のMapとg:createLinkの組み合わせについて

22 views
Skip to first unread message

Koji Kuwana

unread,
Feb 25, 2013, 7:18:25 PM2/25/13
to jg...@googlegroups.com
初めまして。桑名と申します。

現在、以下の環境にてwebアプリケーションを作成しています。
Grails2.2
Groovy2.0
Eclipse(Indigo)
Mac OSX(Mountain Lion)

Grailsのソースを直接探った訳ではないのでバグかどうか分かりませんが、ちょっと不思議な動作に行き当たってしまいました。

ちょっと説明しづらいのですが、
1.コントローラからビューにMapを渡す
2.ビューの中のg:eachでそのMapを使う
3.g:eachのループ内で、g:createLinkのparamsに、Map内の各要素のキーを利用する
4.キーの内容によってなぜかクエリストリング(URLの?以降)が作成されない事がある

g:each部分のソースは以下のような感じでです。
Mapの各要素のキー毎にリンクを生成するようにしています。
(debugの中身はMap)
<g:each in="${debug}" status="i" var="record">
<g:createLink controller='hello' action='debug' params='[p:"${record.key}"]' /><br />
</g:each>

この方法だと、Mapのキーによってはクエリストリング(URLの?以降)が生成されない場合があります。
g:linkでも同様にクエリストリングが生成されないようです。

単純にキーの内容${record.key}を表示すると問題なく表示されるので、g:link系の問題なのかなと考えています。

実際に利用したMapの値とg:eachの該当部分はgistに上げました。
https://gist.github.com/koji-k/5033873


もし何かご存知の方がいらっしゃいましたらご教示いただければ幸いです。

Kiyotaka Oku

unread,
Feb 25, 2013, 8:15:26 PM2/25/13
to jg...@googlegroups.com
奥です。

同じように試しましたが、手元の環境では正しい動きをしました。
http://jggug-hellograils.cloudfoundry.com/hello/index

ソースはこちらです。
https://github.com/kiy0taka/HelloGrails

桑名さんの環境と違うところはEclipseとIntelliJぐらいなのですが、
ソースに何か違うところがありますでしょうか?

2013/2/26 Koji Kuwana <saba...@gmail.com>:
> --
> このメールは Google グループのグループ「JGGUG」の登録者に送られています。
> このグループから退会し、メールの受信を停止するには、jggug+un...@googlegroups.com にメールを送信します。
> このグループに投稿するには、jg...@googlegroups.com にメールを送信してください。
> http://groups.google.com/group/jggug?hl=ja からこのグループにアクセスしてください。
> その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。
>
>

Koji Kuwana

unread,
Feb 26, 2013, 7:53:56 AM2/26/13
to jg...@googlegroups.com
奥さん

態々ソースまで書いて頂いて本当にありがとうございます。

ソースも拝見させて頂き、確かに違う箇所が無いな~と思って再度私の環境を確認してみた所、正常に動作しました。
昨日は確かに動作しなかったのですが・・・

あれからの違いというと、ソースに変更は無いのですが、PCの再起動(という事はEclipseとGrailsの再起動)をした事ぐらいです。
EclipseのGrailsIDEのコンソールからstop-appを実行してもGrailsは停止せず、Eclipse自体を閉じるとGrailsも停止するなど、ちょっと動作が今一なので、もしかしたらIDEでコンパイルが上手く出来ていなかったなどあったのかもしれません。
動いてしまったので原因の追及が出来ず・・・

次回再現した際には別の環境などでも試してみて、原因が分かりましたら、改めてご報告させて頂きます。


本当にありがとうございました。
Reply all
Reply to author
Forward
0 new messages