Grails - 如何将一个 ID 从视图发送到控制器(多对多关系)
Grails - How to send one ID from view to controller (many-to-many relationship)
我正在尝试发送重复项的 ID,但我认为正在发送整个列表。我怎样才能只发送一个ID?
我有 STUDENT
和 COURSE
域 class。
领域模型
class Student {
String fullName
String toString() {
"$fullName"
}
static belongsTo = [school: School]
static hasMany = [courses:Course, studentCourses:StudentCourse]
}
class Course {
String course
String toString() {
"$course"
}
static hasMany = [studentCourses:StudentCourse]
static belongsTo = Student
}
class StudentCourse {
Student student
Course course
//Some methods...
}
这是我的编辑视图。
<g:if test="${studentInstance.studentCourses?.course}">
<g:each class="courseList" in="${studentInstance.studentCourses?.course}" var="courses">
<li class="courseList">
<span class="courseList" aria-labelledby="courses-label">${courses.id} ${courses}
<g:actionSubmitImage class="deleteIcon" action="deleteCourse" value="delete"
src="${resource(dir: 'images', file: 'delete.png')}" height="17"
onclick="return confirm('${message(code: 'default.button.delete.confirm.message', default: 'Are you sure?')}');"
params="${courses.id}"/></span>
</li>
</g:each>
</g:if>
我希望能够在用户单击 delete.png
图片时从列表中删除一门课程。但是当我 println params.course
时,参数作为整个列表发送,而不是作为列表的单个项目发送,即使它在 g:each
标记内。我怎样才能只向控制器发送一个相应的项目?
我的编辑页面有课程列表。
Course 23 English (delete icon here)
42 Science (delete icon here)
67 Math (delete icon here)
在我的 println params.course
中,这是我看到的。
[ English, Science, Math ]
当用户单击 English
行旁边的删除按钮时,我如何才能拥有 [English]
?
提前致谢。
据我了解你的问题,问题应该在你的标签库中
我给你的是类似代码的例子,这是有效的。
<g:each in="${student?.studentCourses?.course}" var="course">
<div>
<span>${course.id} ${course.course}</span>
<g:link controller="login" action="delete" params="[courseId:course.id]">
Delete
</g:link>
</div>
在此代码块中,通过单击 删除 link 和 params 具有 params=" ${[id:course.id]},它将重定向到 delete 控制器内的 login 操作。打印参数在删除操作中,您将获得输出
参数:[courseId:2, action:delete, format:null, controller:login]
在这里你可以看到你的 params.courseId 只是一个 Long 值 而不是列表。
希望它能帮助您理解您的问题。
我正在尝试发送重复项的 ID,但我认为正在发送整个列表。我怎样才能只发送一个ID?
我有 STUDENT
和 COURSE
域 class。
领域模型
class Student {
String fullName
String toString() {
"$fullName"
}
static belongsTo = [school: School]
static hasMany = [courses:Course, studentCourses:StudentCourse]
}
class Course {
String course
String toString() {
"$course"
}
static hasMany = [studentCourses:StudentCourse]
static belongsTo = Student
}
class StudentCourse {
Student student
Course course
//Some methods...
}
这是我的编辑视图。
<g:if test="${studentInstance.studentCourses?.course}">
<g:each class="courseList" in="${studentInstance.studentCourses?.course}" var="courses">
<li class="courseList">
<span class="courseList" aria-labelledby="courses-label">${courses.id} ${courses}
<g:actionSubmitImage class="deleteIcon" action="deleteCourse" value="delete"
src="${resource(dir: 'images', file: 'delete.png')}" height="17"
onclick="return confirm('${message(code: 'default.button.delete.confirm.message', default: 'Are you sure?')}');"
params="${courses.id}"/></span>
</li>
</g:each>
</g:if>
我希望能够在用户单击 delete.png
图片时从列表中删除一门课程。但是当我 println params.course
时,参数作为整个列表发送,而不是作为列表的单个项目发送,即使它在 g:each
标记内。我怎样才能只向控制器发送一个相应的项目?
我的编辑页面有课程列表。
Course 23 English (delete icon here)
42 Science (delete icon here)
67 Math (delete icon here)
在我的 println params.course
中,这是我看到的。
[ English, Science, Math ]
当用户单击 English
行旁边的删除按钮时,我如何才能拥有 [English]
?
提前致谢。
据我了解你的问题,问题应该在你的标签库中
我给你的是类似代码的例子,这是有效的。
<g:each in="${student?.studentCourses?.course}" var="course">
<div>
<span>${course.id} ${course.course}</span>
<g:link controller="login" action="delete" params="[courseId:course.id]">
Delete
</g:link>
</div>
在此代码块中,通过单击 删除 link 和 params 具有 params=" ${[id:course.id]},它将重定向到 delete 控制器内的 login 操作。打印参数在删除操作中,您将获得输出 参数:[courseId:2, action:delete, format:null, controller:login] 在这里你可以看到你的 params.courseId 只是一个 Long 值 而不是列表。
希望它能帮助您理解您的问题。