2011-12-16 48 views
0

我有一個這樣的控制器:如何更改我的視圖文件以獲取適當的輸出?

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

當我試圖找到分配給特定user的所有任務。我有一個對應的視圖文件:

<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項目,該項目似乎是List中的List。

這意味着改變這種:

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

這個

<g:each in="${mywork[0]}" var="tasks"> 
// or 
<g:each in="${mywork.tasks}" 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`來解釋它。 – 2011-12-16 07:10:30

相關問題