我正在构建我的第一个Spring MVC应用程序,而我正处于一个有点卡住的地方。我调用数据库来检索数字列表(区域),然后在列表框中填充它们。用户应选择其中一个选项,然后单击“提交”按钮。问题是我不知道如何在控制器端捕获它。起初我以为它会像获取参数一样简单,但我猜不是。我不想只为一个数字构建一个Java类/ Bean。这看起来有点愚蠢。所以,让我与你分享我的代码。
JSP:
<html>
<head>
<title>Spring 3 MVC Series - Contact Manager</title>
</head>
<body>
<h2>Branches</h2>
<form:form method="get" action="branch.html">
<table>
<c:if test="${not empty lists}">
<select name="regions" size="4">
<c:forEach var="listVal" items="${lists}">
<option>${listVal} </option>
</c:forEach>
</select>
</c:if>
</table>
</form:form>
<form:form method="get" action="loadbranches.html">
<c:if test="${not empty lists}">
<select name="branches" size="4">
<c:forEach var="branchVal" items="${branches}">
<option>${branchVal} </option>
</c:forEach>
</select>
</c:if>
<tr>
<td colspan="2">
<input type="submit" value="submit choice" />
</td>
</tr>
</form:form>
</body>
</html>
控制器:
@Controller
@SessionAttributes
public class BranchController {
@RequestMapping(value = "/loadbranches", method = RequestMethod.GET)
public ModelAndView getBranches()
{
//org.springframework.web.util.WebUtils.getParametersStartingWith(, prefix)
DatabaseConnect dbCon = new DatabaseConnect();
ArrayList<Object> branches = dbCon.loadData(USER SELECTED NUMBER I CANNOT FIGURE OUT);
ModelAndView model = new ModelAndView("branch");
model.addObject("branch", branches);
return model;
}
@RequestMapping("/branch")
public ModelAndView showRegions()
{
DatabaseConnect dbCon = new DatabaseConnect();
ArrayList<Object> regionIDS = dbCon.loadData("regions");
ModelAndView model = new ModelAndView("branch");
model.addObject("lists", regionIDS);
return model;
}
}
正如您所看到的那样,应用程序还不是那么复杂。我正在使用数据库和另一个Java类,但它完美地工作。那么有没有办法从请求参数中的列表框中选择用户?理想情况下,我希望在用户点击提交时发生这种情况,这就是为什么除了数字列表(区域)的初始加载之外还有一个单独的表单标记,如果这有意义的话。我已经查看了涉及选择路径参数的不同示例,但是在用户点击提交按钮后,是否只有一种简单的方法可以从列表框中获取选择?我真的很感激这方面的帮助!
谢谢!
答案 0 :(得分:2)
试试这个:
@RequestMapping(value = "/loadbranches", method = RequestMethod.GET)
public ModelAndView getBranches(@RequestParam(value="branches") String branches)
{
....
}
如果用户可以选择多于1个brach(多选),则可以注入List:
@RequestMapping(value = "/loadbranches", method = RequestMethod.GET)
public ModelAndView getBranches(@RequestParam(value="branches") List<String> branches)
{
....
}