web-dev-qa-db-ja.com

GSP:モデル(変数)が空で機能していないかどうかを確認します

Grails(1.3.7)を初めて使用し、何かを機能させようとしているIm:

私のコントローラーでは、gspでアクセスしたいいくつかのリストを返します。アクセスは機能しますが、空でない場合にのみアクセスしたいと思います。リストが空かどうかのチェックは機能しません。

これが私のコントローラーが返すものです:

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

allQuestions-objectsは、Questions-Objects(Database-Object)を含む「defallQuestions ..」です。

私の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>

ループは機能していますが、空のチェックは機能していません。 「notempty」、「!empty」、...何が悪いのかわからない!どんな助けも大歓迎です! :-)

16
nano7

GSPでは、$ {}式で完全なグルーヴィーなサポートがあります。必要に応じて、オブジェクトに対して適切なメソッド呼び出しを行うことができます。これを試して:

<g:if test="${questionsList101 != null && !questionsList101.isEmpty()}">
15
Jon Quarfoth

これを行うための「最もグルーヴィーな」方法は

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

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

36
Matt Lachman