2014-10-09 52 views
0

從Grails的控制器功能,如果我想從另一個對象中檢索的值執行計算,我檢索它如下:從視圖

def person = Person.get(10) 
println person.name 

上面的代碼將返回一個人對象,其中ID10,並且它還會返回該特定用戶的name

同樣,我怎麼能在視圖中做這樣的計算。

查看

<body> 
<table> 
<g:each in="${personInstanceList}" status="i" var="personInstance"> 
        <tr class="${(i % 2) == 0 ? 'even' : 'odd'}"> 

         <td><g:link action="classesoffered" 
           url="${fieldValue(bean: personInstance, field: "id")}" 
           id="${personInstance.id}" > 
       ${personInstance.id} 
          </g:link></td> 
        ..... 



    ... </body> 

上面的代碼將顯示人對象的ID。是否有可能使用此ID來檢索另一個對象的值。例如。

def school = School.get(${personInstance.id}) 

我可以使用ID (${personInstance.id})從View中檢索學校嗎?

注意:希望我已經正確地解釋了這個問題。簡而言之,我想在視圖上進行計算。從視圖中從${personInstance.id}檢索schoolinstance

UPDATE

角色模型

String name 
int school 

校示範

String nameOfSchool 
+0

你的'Person'類是什麼樣的?更正常的Grails方法是將一個「Person」關聯到'School',這樣你就可以在適當的地方使用personInstance.school。 – 2014-10-09 10:12:10

+0

我已更新我的帖子。我使用學校作爲整數。在那種情況下,我如何顯示VIew的學校名稱? – Illep 2014-10-09 10:15:25

+0

爲什麼你不使用正常的關聯('School school'而不是'int school')?然後'personInstance.school'會直接給你提供'School'對象的引用。 – 2014-10-09 10:53:58

回答

1

您可以在您的視圖導入域具有:(普惠制的第一行)

<%@ page import="com.yourPackage.School" %> 

然後,你可以使用標籤set在您的視圖內創建一個新變量。

例如:

<g:set var="school" value="${ School.get(personInstance.id) }" /> 

如果你想在你的GSP打印值(例如學校的名字),你可以使用:

${ school.nameOfSchool } 

(如果學校不是零當然)

希望可以幫助

+0

現在好了,我怎麼打印這個值? – Illep 2014-10-09 11:03:44

+0

我剛更新了我的答案。 – Abincepto 2014-10-09 11:09:31

1

而不是試圖做這樣的事情查看,您應該重新設計您的域模型以適應任務。如果你想讓每個Person鏈接到它們的School,那麼你應該做一個適當的關聯,而不是存儲一個ID(順便說一句,你使用了錯誤的類型 - 默認情況下,Grails域類的ID是Long,而不是int):

class Person { 
    String name 
    School school 
} 

class School { 
    String name 
} 

,並創建實例是這樣的:

// create a new school 
def school = new School(name:'Example school') 
// or fetch an existing one from the DB 
// def school = School.get(1) 

def person = new Person(name:'Illep', school:school) 

在這個模型中,GSP可以訪問校名簡稱爲

${personInstance.school?.name} 
+0

我同意你的意見。我的解決方案解決了這個問題,但可能存在建模問題。 – Abincepto 2014-10-09 12:31:50