grails下拉列表无法显示正确的值
这个下拉列表也几乎按照我想要的方式工作。我无法显示应答对象的body属性或toStringgrails下拉列表无法显示正确的值,grails,Grails,这个下拉列表也几乎按照我想要的方式工作。我无法显示应答对象的body属性或toString <g:select name="questionId" from="${questionInstance.answers.id}" value="${questionInstance.correctAnswer.id}" noSelection="['':'Select a Module']" /> 我做错了什么 问题 答复 你能提供域名的问题
<g:select name="questionId"
from="${questionInstance.answers.id}"
value="${questionInstance.correctAnswer.id}"
noSelection="['':'Select a Module']" />
我做错了什么
问题
答复
你能提供域名的问题和答案吗 同时,尝试添加属性optionKey=id optionValue=name
如果域具有名称属性。我认为,这应该可以:
<g:select name="questionId"
from="${questionInstance.answers}"
value="${questionInstance.correctAnswer}"
optionKey="id"
optionValue="body"
noSelection="['':'Select a Module']" />
我可以使用选项key和value,但前提是我从from=${questionInstance.answers.id}中删除id,这会阻止默认选择正确的答案。我将尝试在我的系统中模拟它,并让您知道。遇到未选择任何内容的问题。我不明白为什么,因为questionInstance.correctAnswer和questionInstance.answers中的第一项是实现equals和hashCode的相同方法,以确保问题类中id的相等。我已将@EqualsAndHashCode注释添加到问题域中,并且每个符号都可以正常工作!您知道为什么必须这样做吗?添加optionKey=id将导致下拉菜单在页面加载时取消选择正确答案。这种奇怪的行为默认的相等方法不考虑id。
class Question {
DateTime dateCreated
DateTime lastUpdated
String body
Answer correctAnswer
Integer ordinal
static belongsTo = [lesson: Lesson]
static hasMany = [answers: Answer]
static constraints = {
body blank: false
correctAnswer nullable: true,
validator: { Answer val, Question obj ->
// Correct answer must have this as it's question
val ? val.question == obj : true // TODO: Give this a proper error message
}
ordinal unique: 'lesson'
}
static mapping = {
lesson lazy: false
answers sort: 'ordinal'
}
}
class Answer {
DateTime dateCreated
DateTime lastUpdated
String body
Integer ordinal
String reason
static belongsTo = [question: Question]
static constraints = {
body blank: false
ordinal unique: 'question'
reason blank: false
}
static mapping = {
question lazy: false
}
String toString() {
"Answer: $body"
}
}
<g:select name="questionId"
from="${questionInstance.answers}"
value="${questionInstance.correctAnswer}"
optionKey="id"
optionValue="body"
noSelection="['':'Select a Module']" />