2009-06-30 4 views
2

ユーザーが管理者としてログインしているかどうかを確認するコードを書いて、他のユーザーのアクセス許可を変更できるユーザーを制限しますが、ifタグは決して真ではありません。正しいデータがそこにエコーされていることを確認しましたが、私が今までに見つけたものは私に解決策を与えてくれませんでした。Grails g:ifと文字列の比較

<g:if test="${session.userPermissions == 'Administrator'}"> 
    <g:select id="permissions" name="permissions" from="${userInstance.constraints.permissions.inList}" value="${userInstance.permissions}" ></g:select> 
</g:if> 
<g:else> 
    ${userInstance.permissions} 
</g:else> 
+1

?名前は何とか、それが単一のStringではなくリストであることを示唆しています。 –

+0

私はそれを文字列として設定していますが、それをリストに変換している可能性があります。私はそれを確認する必要があります。 – Noaki

+0

それはリストです、私はsession.userPermissions [0]を使って文字列にアクセスできます。しかし、私はそれを割り当てるときに私は文字列データ型を使用しています。 – Noaki

答えて

1

それはグルーヴィーthing-

が、私は、ユーザーのログイン情報を取得するための基準を使用して終わります。条件では、ユーザー変数のリストが返されます。私はsession.userPermissions = user.permissionsを設定していました

groovyでは、すべてのリスト要素のプロパティにアクセスし、それらを新しいリスト(以下の例)として取得できます。これは私のセッションでリスト変数を私に与えていた。本当にクールな機能ですが、このような事故で見つけたがっかりする人はいません。

groovy> def demo = [] 
groovy> demo[0] = [a:1, b:2] 
groovy> demo[1] = [a:3, b:4] 
groovy> demo[2] = [a:5, b:6] 
groovy> demo.a 

Result: [1, 3, 5] 
+2

実際、この構文はdemo.collectのショートカットです{ それは }。 list * .myMethod()は、元のリストのすべての要素(いわゆるスプレッドドット演算子)が呼び出されたmyMethod()の戻り値を含むリストを返します。 collect-equivalentは次のようになります:list.collect {it.myMethod()} –

+0

これはバグを追跡するのが難しい原因となるかもしれません... hhmmm not great。 – Chii

+0

Groovyのこの機能(「GPath」と呼ばれています)は本当に嫌です。 'demo * .a'と全く同じことができます。私は、プロパティにアクセスしているのか、プロパティを取得しているのかを明示するために余分な文字を入力するとうれしいです。 –

8

試みの "Java" 文字列の方法:session.userPermissionsに格納されているオブジェクトのどのようなタイプD

<g:if test="${session.userPermissions.equals('Administrator')}"> 
.... 
</g:if> 
+0

この提案をありがとう!私は、2つの文字列(あるいは少なくとも私が文字列であると思った)xとyが$ {x}や%{y}と同等に表示される.gspファイルで全く同じ問題を抱えていました。 String.equalsを使用すると、問題と謎が解消されました。 –

+0

ありがとう、私のために働く:) – zack