我有一个选择字段来选择这个部门。我想要实现一个显示在该部门工作的员工列表的视图。我希望在同一个页面(视图)中同时显示“选择”字段和“员工列表”。如何将选定的字段参数发送到相同的控制器,更新employees对象的列表并在同一页中显示列表。
发布于 2014-04-07 05:40:53
部分页面更新有三个主要部分。我将给你一个总体的概述,每个部分是如何组成的一些例子。这应该能让你走上正确的道路。我不得不做很多假设,因为你的问题对细节很敏感。但是,您应该能够获取这些信息并编写您所获得的实现。
第1部(提出要求)
这包括监视选择列表以进行更改,并将所选选项的值发送给控制器。JQuery非常适合这一点。我将假设select列表的id为"departmentId“,我们希望将员工列表的内容放入一个id为"displayList”的元素中。
<script type='text/javascript'>
<!--
(function() {
$("#departmentId").on("change", function() {
$.get("${g.createLink(controller: 'employeee', action: 'listForDepartment')}/"+$(this).val(), function(data) {
$("#displayList").html(data);
});
});
})();
// -->
</script>
第2部分(满足要求)
第二部分是我们获得员工名单的控制器代码。这只是一个例子,它看起来可能是什么样子。注意,我们将呈现一个模板,而不是一个视图。这非常重要,因为我们不希望Grails (Sitemesh)对结果应用任何布局。
class EmployeeController {
...
def listByDepartment() {
def model = [:]
model['department'] = Department.get(params.id)
model['employees'] = Employee.findAllByDepartment(model['department'])
render template: 'employeeListForDepartment', model: model
}
...
}
第3部分(在模板中显示结果)
最后,我们的模板grails-app/views/employee/_employeeListForDepartment.gsp
将显示我们部门的员工。由于我们使用了employee控制器,模板位于employee视图中,所有模板都以下划线开头。
<h1>Employees for ${department.name}</h1>
<ul>
<g:each in="${employees}" var="employee">
<li>${employee.name}</li>
</g:each>
</ul>
当然,您的实现细节非常不同,但是总体概念应该是相同的。这只是触及了主要部分,并留下了许多细节,如纺丝,取消请求,等等。
https://stackoverflow.com/questions/22913806
复制相似问题