【发布时间】:2012-01-05 20:03:47
【问题描述】:
我们使用的是 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(没有jQuery)来做到这一点?一旦我可以动态加载下拉选择,我想我可以完成其余的工作。
有什么想法吗?
【问题讨论】:
-
你想在没有像 Java Script 这样的 Ajax 的情况下完成它,还是仅仅没有 jQuery?
标签: spring model-view-controller dynamic drop-down-menu