2011-12-16 9 views
0

私はこのようなコントローラがあります:私は特定のuserに割り当てられたすべてのタスクを見つけようとしているビューファイルを変更して適切な出力を得るには?

def mytask = { 
     def user = User.findByLogin(params.id) 
     def mywork = user.schedules.daySchedules 
     [ mywork : mywork ] 
    } 

を。私は対応するビューファイルを持っています:

<g:each in="${mywork}" var="tasks"> 
       <div id = "todayswork"> 
         ${tasks.task}    
        </div> 
        <div id ="Dates"> 
         ${tasks.startTime}- 
         ${tasks.endTime} 
        </div> 
        <hr/> 
      </g:each> 

論理がうまくいき、私が望むように出力を得ています。たとえば、http://localhost:8080/scheduleTest/daySchedule/mytask/antoに私のブラウザにユーザantoのすべてのタスクが表示されているとします。しかし、レンダリングに問題があります。

私はのような出力を取得しています:

enter image description here

しかし、私はこのような何かを出力必要があります。

enter image description here

がどのように私のビューファイルを変更します適切な出力を得る。

ありがとうございます。

答えて

1

あなたの例では分かりませんが、リスト内のリストのように見えるtasksアイテムをループする必要があります。

これは、この変更を意味します。もう一度この

<g:each in="${mywork[0]}" var="tasks"> 
// or 
<g:each in="${mywork.tasks}" var="tasks"> 

<g:each in="${mywork}" var="tasks"> 

を、私は、問題が発生している場所を正確にわからないんだけど、それらの一つは、それを修正します。

出力が得られる理由は、プロパティがそのリストに定義されていない場合、Groovyはリストのプロパティ拡張を自動的に実行するということです。例:

use(org.codehaus.groovy.runtime.TimeCategory) { 
    def d1 = 5.minutes.ago 
    def d2 = 1.week.from.now 
    assert [d1, d2].time == [d1.time, d2.time] 
} 

それはlist*.propertyを書くことと同じことだし、元の項目の各propertyを含む新しいリストを返します。

+0

うまく動作します。私は、統合テストを書いて失敗してリストのリストを返すことさえ知っていました。例を 'use'で与えてくれてありがとう、ありがとう。 –

関連する問題