我们使用的是spring-mvc 2.5版。我正在努力根据第一个下拉列表的选择加载第二个下拉控件的概念。我真的不想在此时不必向项目中引入类似jQuery的东西 - 如果可能的话。我很确定这在jQuery之前是可行的。
这是我想要做的一个例子:
首先,从一个下拉列表开始,该列表包含由员工ID键入的员工姓名列表。
然后,在从此列表中进行选择后 - 加载并显示第二个下拉列表,其中列出了他们按办公室ID键入的办公室
然后,最后 - 从第二个列表(办公室)中进行选择并显示提交按钮
就jsp代码而言,我从一开始就遇到了麻烦。当下拉列表发生变化时,我无法将表单提交给控制器。 onChange事件不能与标记一起使用。如果我使用它(如下),则选择的值不会传递给控制器:
<select path='employee' onChange="submit();">
<option value="${selected}" selected>${selected}</option>
<c:forEach items="${employees}" var="currentEmployee">
<c:if test="${currentEmployee!= selected}">
<option value="${currentEmployee.employeeId}">${currentEmployee.employeeName}</option>
</c:if>
</c:forEach>
</select>
</form:form>
我不知道如何将选择传递给控制器。显然,需要知道选择,以便我可以使用所选员工的相应数据加载第二个下拉列表。
我尝试过initBinder方法:
protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception {
binder.setDisallowedFields(new String[] {"employees"});
Employee employee = (Employee)binder.getTarget();
但找不到员工对象。
onSubmit方法也没有获取值:
public ModelAndView onSubmit(Object command) throws ServletException
{
String selectedEmployee = ((Employee) command).getName();
logger.info("The Selected Employee is: " + selectedEmployee );
这也不会选择所选的员工。我是Spring的新手,我怀疑自己离开了这种动态加载的基础。是否可以使用spring(withut jQuery)执行此操作?一旦我可以动态加载下拉选项,我想我可以完成其余的工作。
有什么想法吗?
答案 0 :(得分:0)
HTML select标记没有path
属性。它具有name
属性。 Spring form:select
具有path
属性。
使用<form:select ...>
而不只是<select ...>
。