案例:我有一个组织对象。它有一个部门对象列表,每个部门都有一个员工对象列表。
在JSP中,我有一个复选框列表,它将复选框绑定到员工对象(深入2个层次结构。那就是组织-
<input type="checkbox" name="adminDepartmentList[${status.index}].employeeList" value="${employee.firstName}"> <c:out value="${employee.firstName}" /><br>
如您所见:
adminDepartmentList[0].employeeList --> John
adminDepartmentList[2].employeeList --> Rose
装订很好。表单提交后,在controller中,我可以循环查看admin departmentList,查找创建的所有部门,并查找由于选中复选框而创建的员工。
问题:(部门是用空名称和非空雇员列表创建的。我找不到雇员列表所属部门的名称:(那么我如何传递一些部门名称,以便将名称注入到部门(因为它正在创建)就像“。雇员列表”如何注入到部门一样。
细节:为您提供我工作的细节:
组织类有两个部门列表。部门类有一个员工列表。员工有名字、姓氏和小时工作时间。
public class Organization{
private long id;
private String name;
private List<Department> adminDepartmentList; //n admin departments
private List<Department> employeeDepartmentList //m employee departments
// default constructor and all getters and setters
}
public class Department{
private long id;
private String name;
private List<Employee> employeeList; //k employees
//default constructor and all getters and setters
}
public class Employee{
private long id;
private String firstName;
private String lastName;
private int hoursToWork; // to be filled from Spring MVC form
//default contructor and all getters and setters
}
部门列表来自API。该部门的所有员工都来自另一个API。
我正在编写一个客户端,该客户端允许用户通过首先选择他们感兴趣的部门来创建“定制组织”,然后对于所选的每个部门,用户从与该部门相关的所有员工中选择一部分员工。
因此,我有3个JSP表单:
组织形式(Organization.jsp):输入组织名称字段和所有部门的复选框列表。用户可以为正在创建的新组织选择一组部门。
<form:form name='fs' action="department.htm" method='POST' commandName="organization">
Organization Name:
<input type="text" name="name" >
<!-- ============================================================== -->
Departments:<br> Select admin-departments you want.
<div class="checkbox-list">
<%-- Size :<c:out value="${organization.adminDepartmentList.size}"/> --%>
<c:forEach var="i" varStatus="status" items="${organization.adminDepartmentList}">
<input type="checkbox" name="adminDepartmentList" value="${i.name}"> <c:out value="${i.name}" /><br>
</c:forEach>
</div>
<!-- ============================================================== -->
Departments:<br> Select employee-departments you want.
<div class="checkbox-list">
<c:forEach var="i" varStatus="status" items="${organization.employeeDepartmentList}">
<input type="checkbox" name="employeeDepartmentList" value="${i.name}"> <c:out value="${i.name}" /><br>
</c:forEach>
</div>
<button type="submit" class="btn btn-lg btn-primary btn-block">Next Step</button>
</form:form>
部门表单(Department.jsp):对于所选的每个部门,这将显示要为该部门选择的员工的复选框列表。
<form:form name='f' action="employee.htm" method='POST' commandName="organization">
Organization Name: <c:out value="${organization.name}" /><br>
Select Employees you want for your new Departments.
Admin Departments:<br>
<c:forEach var="department" varStatus="status" items="${organization.adminDepartmentList}">
______Dept: <c:out value="${department.name}" /><br>
<div class="checkbox-list">
<c:forEach var="employee" varStatus="status" items="${department.employeeList}">
<input type="checkbox" name="adminDepartmentList[${status.index}].employeeList" value="${employee.firstName}"> <c:out value="${employee.firstName}" /><br>
</c:forEach>
</div>
</c:forEach>
Employee Departments:<br>
<c:forEach var="department" varStatus="status" items="${organization.employeeDepartmentList}">
______Dept: <c:out value="${department.name}" /><br>
<div class="checkbox-list">
<c:forEach var="employee" varStatus="status" items="${department.employeeList}">
<input type="checkbox" name="employeeDepartmentList[${status.index}].employeeList" value="${employee.firstName}"> <c:out value="${employee.firstName}" /><br>
</c:forEach>
</div>
</c:forEach>
<button type="submit" class="btn btn-lg btn-primary btn-block">Next Step</button>
</form:form>
员工表单(Employee.jsp):对于在部门表单中选择的每个员工,这将显示员工姓名和一个字段,用于输入将分配给该员工的小时数。
员工控制器(部门名称为空的控制器)
@RequestMapping(value = "/employee", method = RequestMethod.POST)
public String product_post(@ModelAttribute("organization") Organization organization, HttpServletRequest request,
HttpServletResponse response, BindingResult result, ModelMap model) {
System.out.println("=========== POST Employee CONTROLLER===============");
//STEP 1. show me which employees are selected for each admin department.
List<Department> adminDepartments = organization.getAdminDepartmentList();
for(Department dept: adminDepartments){
System.out.println("Admin Dept name::: " + dept.getName()); //<-----------Name Comes as null :(
List<Employee> employeeList = dept.getEmployeeList();
for(Employee emp: employeeList){
System.out.println("Employee::"+ emp.getFirstName());
}
}
//STEP 2. show me which employees are selected for each employee department.
List<Department> employeeDepartments = organization.getEmployeeDepartmentList();
for(Department dept: employeeDepartments){
System.out.println("Employee Dept name::: " + dept.getName()); //<----------Name Comes as null :(
List<Employee> employeeList = dept.getEmployeeList();
for(Employee emp: employeeList){
System.out.println("Employee::"+ emp.getFirstName());
}
}
model.addAttribute("organization", organization);
return "employee";
}
已知:我理解为什么部门。name没有被注入,但我不知道如何解决它。如何将部门名称从外部循环注入到运行在下面c:foreach中的员工列表上的内部循环?或者如何将其与每个员工绑定。我怀疑它在这里:
Admin Departments:<br>
<c:forEach var="department" varStatus="status" items="${organization.adminDepartmentList}">
______Dept: <c:out value="${department.name}" /><br>
<div class="checkbox-list">
<c:forEach var="employee" varStatus="status" items="${department.employeeList}">
<input type="checkbox" name="adminDepartmentList[${status.index}].employeeList" value="${employee.firstName}"> <c:out value="${employee.firstName}" /><br>
</c:forEach>
</div>
</c:forEach>
我尝试隐藏输入来帮助创建命名部门,但没有帮助。
学分:
为简单起见,假设员工的FirstName是唯一的。department.name也是唯一的。谢谢。
新闻:哦,哇,天哪,我解决了。
缺少的部分:隐藏输入,告诉创建哪个部门以及向其中注入什么名称。
<form:hidden path="adminDepartmentList[${statusDepartment.index}].name" value="${department.name}" />
将部门名称注入到spring创建的每个部门。
整体解决方案:department.jsp
<form:form name='f' action="employee.htm" method='POST' commandName="organization">
Organization Name: <c:out value="${organization.name}" /><br>
Select Employees you want for your new Departments.
Admin Departments:<br>
<c:forEach var="department" varStatus="statusDepartment" items="${organization.adminDepartmentList}">
______Dept: <c:out value="${department.name}" /><br>
<div class="checkbox-list">
<form:hidden path="adminDepartmentList[${statusDepartment.index}].name" value="${department.name}" />
<c:forEach var="employee" varStatus="statusEmployee" items="${department.employeeList}">
<form:checkbox path="adminDepartmentList[${statusDepartment.index}].employeeList" value="${employee.firstName}"/> <c:out value="${employee.firstName}" /><br>
</c:forEach>
</div>
</c:forEach>
Employee Departments:<br>
<c:forEach var="department" varStatus="statusDepartment" items="${organization.employeeDepartmentList}">
______Dept: <c:out value="${department.name}" /><br>
<div class="checkbox-list">
<form:hidden path="employeeDepartmentList[${statusDepartment.index}].name" value="${department.name}" />
<c:forEach var="employee" varStatus="statusEmployee" items="${department.employeeList}">
<form:checkbox path="employeeDepartmentList[${statusDepartment.index}].employeeList" value="${employee.firstName}"/> <c:out value="${employee.firstName}" /><br>
</c:forEach>
</div>
</c:forEach>
<button type="submit" class="btn btn-lg btn-primary btn-block">Next Step</button>
</form:form>
我想在不同的列表中加入多个向量,并输出一个矩阵列表。其思想是,列表中具有相同名称的所有项目,例如所有项目,通过行作为矩阵连接起来。增加的复杂性是,这些向量可以具有不同的长度,因此实现起来并不简单;矩阵中缺少的值可以附加s。 输入列表: 我希望获得的理想输出是一个列表,其中矩阵的数量与唯一列表项的数量相同,其中每个矩阵由行绑定的不同长度的向量组成: 我将如何编写一个函数,它也可以扩展到合并具有不同长
我正在创建一个asp.net页面,允许用户跨多个数据库搜索。 如果找到匹配项,我希望在主ListView中返回数据库名称。然后,我想在相应的数据库名称下,在嵌套的ListView中显示与搜索条件匹配的所有公司。 e. g.搜索:公司 后果 数据库1名称 数据库2名称 数据库3名称 如何引用和填充嵌套的ListView?
当我试图将一个列表元素绑定到JavaFX标签时,我遇到了一个问题。如果项目不在列表中,我没有问题。 垃圾收集器是这个问题的原因吗? Controller.class:(fxml文件的控制器) Context.java:(刷新变量的类) 要刷新标签,我使用
我有6个输入框,每个输入框有4位数字。输入4位数字后,光标将自动转到下一个输入框。所有这些都是强制性的。 现在,可以在“onChange”事件中将自动聚焦设置为下一个文本框。但如何将这6个输入框的值绑定到表单上的一个字段。我有办法吗?
问题内容: 我出于性能原因使用此sql 但是我有一个例外 有什么解决方法可以让我将列表绑定到’in’子句的参数? 问题答案: 对旧问题的新答案,因为自从首次发布此问题/接受的答案以来,似乎某些基本功能已发生更改(如@vicvicvic在@Gary的答案中所暗示的,但我认为它应该是提高可见度的答案) 。 现在支持类型修改,类型修改除了其他功能外,还允许将列表传递到查询中的单个参数化值中。这也可以在S
问题内容: 动物是一种动物。猫和狗都是。 现在,我正在尝试并希望使用“类型”来获取子类。 但是类型字段不在列之内。 提前致谢 :) 问题是类型不符合动物{}。 如果类型在动物{}中,则代码将起作用。但这不是t): 问题答案: 可能,但是键入JSON应该看起来像(完全限定名称) Abstract类 子类 现在,对于json 这将是实例 和 这将是例如 编辑 在这种情况下使用。例 动物类 对于 它运作