2011-06-23 7 views
14

のGrailsに新しいイム(1.3.7)とイムを動作していない空であるかどうかを確認:私のコントローラでGSP:モデル(変数)が動作するように何かを取得しようとして

を、私は私がしたいいくつかのリストをお返し私のgspにアクセスする。アクセスは機能しますが、空でない場合にのみアクセスします。リストが空であるかどうかのチェックは機能しません。ここで

は私のコントローラがバック与えるものである:

return new ModelAndView("https://stackoverflow.com/questions/questions", [ questionsList101 : allQuestions101, questionsList102 : allQuestions102, ... ])

allQuestions-オブジェクトは "DEF allQuestions .." 私のGSPに質問・オブジェクト(データベース・オブジェクト)

を含むある今私がしてみてください次のようになります。

<g:if test="${!empty questionsList101}"> 101:<br/> 
<g:each in="${questionsList101}" var="elem" status="i"> 
    <g:checkBox name="${questionsList101[i].id}" value="${questionsList101[i].id}"/>${questionsList101[i].id}<br/> 
</g:each> 
<br/> 
</g:if> 

ループが機能していれば、空のチェックはありません。私は "空ではない"、 "!空"でしようとしました...何が間違っているのか分かりません!どんな援助も感謝です! :-)

答えて

14

GSPでは、$ {}式で完全なgroovyサポートを利用できます。必要に応じて、オブジェクトに対して適切なメソッド呼び出しを行うことができます。これを試してみてください:

<g:if test="${questionsList101 != null && !questionsList101.isEmpty()}"> 
+0

私は最初に試しました。そうでない場合は、次のエラーメッセージが表示されます。GroovyPageViewの処理中にエラーが発生しました:タグの実行中にエラーが発生しました。:ヌルオブジェクトでメソッドisEmpty()を呼び出せません:-)他のメソッドでも同じです。私はオブジェクトがnullの場合、それらを呼び出すことはできません - 非常に面白い.... – nano7

+0

あなたはちょうどヌルチェックが必要なように見えます。私は私の答えを更新します。 –

+0

ありがとう!これは完全に動作します! :-) – nano7

34

これを行うには、 "grooviest" の方法は、Groovyで

<g:if test="${questionList101}"> 

で、ヌルオブジェクトと空のコレクションはfalseに強要されています。ここでGroovyの真理についてのドキュメントを参照してください:http://groovy-lang.org/semantics.html#Groovy-Truth

関連する問題