SPRING MVC - 在另一个下拉选择中下拉动态填充

时间:2012-01-05 20:03:48

标签: spring model-view-controller dynamic drop-down-menu

我们使用的是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)执行此操作?一旦我可以动态加载下拉选项,我想我可以完成其余的工作。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

HTML select标记没有path属性。它具有name属性。 Spring form:select具有path属性。

使用<form:select ...>而不只是<select ...>