java - 在 Spring MVC/JSP/Controller 中从列表框中获取用户的选择

标签 java spring jsp spring-mvc

我正在构建我的第一个 Spring MVC 应用程序,但我遇到了一些困难。我调用数据库来检索数字(区域)列表,然后将它们填充到列表框中。用户应该选择其中一项,然后点击提交按钮。问题是我不知道如何在 Controller 端捕获它。起初我以为这就像获取参数一样简单,但我想并非如此。我不想仅仅为了一个数字而构建一个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 :

@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 类,但它工作得很好。那么有什么方法可以从请求参数或其他内容的列表框中获取用户选择吗?理想情况下,我希望在用户点击提交时发生这种情况,所以这就是为什么除了数字(区域)列表的初始加载之外还有一个单独的表单标记(如果有意义的话)。我已经查看了涉及选择路径参数的不同示例,但是在用户单击提交按钮后,是否有一种简单的方法可以从列表框中获取选择?我非常感谢您的帮助!

谢谢!

最佳答案

试试这个:

@RequestMapping(value = "/loadbranches", method = RequestMethod.GET)
public ModelAndView getBranches(@RequestParam(value="branches") String branches) 
    {

        ....
    }

如果用户可以选择超过 1 个分支(多选),您可以注入(inject)一个列表:

@RequestMapping(value = "/loadbranches", method = RequestMethod.GET)
public ModelAndView getBranches(@RequestParam(value="branches") List<String> branches) 
        {

            ....
        }

关于java - 在 Spring MVC/JSP/Controller 中从列表框中获取用户的选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23692731/

相关文章:

java - 在 Scene Builder 中更改 MenuBar 颜色

java - 什么时候不同步读/写变量是安全的?

spring - 使用@Value Spring Annotation 从.yaml 读取的属性映射的正确用法是什么

java - 对 RESTful 资源的 GET 请求导致未找到 MessageBodyWriter

javascript - 在 Internet Explorer 中第二次加载时,弹出窗口不加载 jsp 脚本

java - 使用 java 检查 Apache Velocity(.vm 文件)中的文本

java - 基于动态构造函数值的 Spring bean 作用域

java - 数组的值发生变化而没有任何命令影响它

Spring Batch ItemWriteListener 和 SkipListener 不能齐头并进

java - Spring @Controller 异常处理程序和全局异常处理程序。如何调用两者