如果我想从另一个对象中检索一个值,请从Grails控制器函数中检索它,如下所示:
def person = Person.get(10)
println person.name
上述代码将返回ID
为10
的人物对象,并且还会返回该特定用户的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})
从视图中检索学校吗?
注意:希望我已正确解释了这个问题。简而言之,我想在视图中进行计算。从视图中schoolinstance
检索${personInstance.id}
。
更新
人物模型
String name
int school
学校模式
String nameOfSchool
答案 0 :(得分:1)
您可以使用以下内容导入视图中的域:( gsp的第一行)
<%@ page import="com.yourPackage.School" %>
然后,您可以使用标记set在您查看的内部创建一个新变量。
例如:
<g:set var="school" value="${ School.get(personInstance.id) }" />
如果您想在GSP中打印该值(例如学校的名称),您可以使用:
${ school.nameOfSchool }
(如果学校当然不是空的)
希望有所帮助
答案 1 :(得分: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}