如何在 Grails 搜索中 return 域对象的 属性?
How can I return the property of a domain object in a Grails search?
我正在为一个相当小的项目编写自己的搜索。搜索页面由 g:selects 组成,由域对象字段填充,如下所示:
<g:form action="list" method="GET">
Last Name <g:select id="lastName" name="searchedLName" from="${StudentEntry.list(sort:lastName, order:desc)}"
noSelection="['null':'None']" optionValue="lastName" value="${params.searchedLName}"/><br/>
Submitted By <g:select id="submitter" name="searchedSubmitter" from="${UserAuth.list(sort:userName, order:desc)}"
noSelection="['null':'None']" optionValue="userName" value="${params.searchedSubmitter}"/><br/>
<button id="submitIt" type="submit">Search</button>
这是域对象的片段
class StudentEntry {
String firstName
String lastName
String submittedBy
String toString() {
lastName + ", " + firstName
}
这是一些bootstrap数据
def entry1 = new StudentEntry {
firstName: "John"
lastName: "Smith"
submittedBy: "Jane Doe"
}
def entry2 = new StudentEntry {
firstName: "James"
lastName: "Jones"
submittedBy: "Jane Doe"
}
这是来自 StudentEntryController 的列表代码
def list(params) {
def result
println "Searched Last Name: " + params?.searchedLName
def theLastName = params?.searchedLName
println "Searched Last Name: " + theLastName
println "Searched Submitter: " + params?.searchedSubmitter
def theSubmitter = params?.searchedSubmitter
println "Searched Submitter: " + theSubmitter
if(params) {
result = StudentEntry.findAllWhere(lastName: theLastName, submitter: theSubmitter)
//render...
当我 运行 搜索时,println 语句正在输出与所选值关联的域对象的 StudentEntry class 的 toString 方法。例如,如果我搜索 lastName="Jones",println 将输出 Searched Last Name: Jones, James
。当我想查看 James Jones 的条目时,我的渲染方法 returns 是一个空列表。
将对象的 属性 而不是对象本身传递给 findAllWhere 方法的正确方法是什么?
我似乎忽略了将要搜索的字段指定为 g:select 中的 optionKey
属性。 println
语句现在正在输出所需的数据。
我正在为一个相当小的项目编写自己的搜索。搜索页面由 g:selects 组成,由域对象字段填充,如下所示:
<g:form action="list" method="GET">
Last Name <g:select id="lastName" name="searchedLName" from="${StudentEntry.list(sort:lastName, order:desc)}"
noSelection="['null':'None']" optionValue="lastName" value="${params.searchedLName}"/><br/>
Submitted By <g:select id="submitter" name="searchedSubmitter" from="${UserAuth.list(sort:userName, order:desc)}"
noSelection="['null':'None']" optionValue="userName" value="${params.searchedSubmitter}"/><br/>
<button id="submitIt" type="submit">Search</button>
这是域对象的片段
class StudentEntry {
String firstName
String lastName
String submittedBy
String toString() {
lastName + ", " + firstName
}
这是一些bootstrap数据
def entry1 = new StudentEntry {
firstName: "John"
lastName: "Smith"
submittedBy: "Jane Doe"
}
def entry2 = new StudentEntry {
firstName: "James"
lastName: "Jones"
submittedBy: "Jane Doe"
}
这是来自 StudentEntryController 的列表代码
def list(params) {
def result
println "Searched Last Name: " + params?.searchedLName
def theLastName = params?.searchedLName
println "Searched Last Name: " + theLastName
println "Searched Submitter: " + params?.searchedSubmitter
def theSubmitter = params?.searchedSubmitter
println "Searched Submitter: " + theSubmitter
if(params) {
result = StudentEntry.findAllWhere(lastName: theLastName, submitter: theSubmitter)
//render...
当我 运行 搜索时,println 语句正在输出与所选值关联的域对象的 StudentEntry class 的 toString 方法。例如,如果我搜索 lastName="Jones",println 将输出 Searched Last Name: Jones, James
。当我想查看 James Jones 的条目时,我的渲染方法 returns 是一个空列表。
将对象的 属性 而不是对象本身传递给 findAllWhere 方法的正确方法是什么?
我似乎忽略了将要搜索的字段指定为 g:select 中的 optionKey
属性。 println
语句现在正在输出所需的数据。