如何将表单提交的结果变量添加到映射?

时间:2019-04-24 13:12:16

标签: java spring jsp jstl

我在jsp文件中有此表单,我从列表中动态填充了一个下拉列表。工作正常。这是位于核心地址“ /”的本地jsp,它将数据发送到“ / spravochnik / list”。

<form action="/spravochnik/list" method="post">
  <select name="tableName">
    <c:forEach var="dropDown" items="${dropDown}">
      <c:forEach var="valuesInRows" items="${dropDown.valuesInRows}">
        <c:forEach var="valuesInRow" items="${valuesInRows}" varStatus="loop">                                        
          <c:if test="${loop.index %2 != 0}">
            <option><c:out value="${valuesInRow}"></c:out></option>
          </c:if>
        </c:forEach>
      </c:forEach>
    </c:forEach>
  </select>
  <input type="submit" value="submit" />
</form>

现在我有一个控制器

@RequestMapping(value = "/spravochnik/list", method = { RequestMethod.POST, RequestMethod.GET })
    public String getSpravochniks(Model m, @RequestParam("tableName") String tableName) {
        Integer idPrepend = spravochnikService.getIdAtSpravName(tableName);
        List<Spravochnik> spravList = spravochnikService.findAll(tableName);
        m.addAttribute("spravList", spravList);
        m.addAttribute("tableName", tableName);
        m.addAttribute("idPrepend", idPrepend);
        return "home";
    }

它也可以正常工作,结果表(我从findAll得到的表)显示为地址/ spravochnik / list。 问题:如何显示地址,具体取决于我从home.jsp发送的变量“ tableName”?例如,如果在下拉菜单中选择“员工”并以“ tableName”名称形式传递它,则我希望结果显示在/ spravochnik / list / employees下,如果我选择“车辆”,则应为“ / spravochnik / list / vehicles”?

我尝试过的事情 -添加变量到动作  并在控制器@RequestMapping(value =“ / list / {tableName}”和tableName作为@PathVariable中。实际结果:找不到。 -与@RequestParam相同,而不是Path Variable。实际结果:未找到。

0 个答案:

没有答案