【问题标题】:MissingServletRequestParameterException: Required String parameter is not presentMissingServletRequestParameterException:必需的字符串参数不存在
【发布时间】:2018-05-03 20:12:01
【问题描述】:

我在一个 Spring Boot 应用程序中创建了一个 jsp 页面,该应用程序在一个表中有多个表单。每个表单都有自己的提交按钮。在每个表单中,我都保留了一个隐藏类型的输入元素,其中包含一个我需要作为请求参数传递给 Controller 类的值。所以表格看起来像这样:

<form action="getNode" method="get">
  <input type="hidden" id="nodeId" value="${nodeid}">
  <table>
  <!-- Displaying node related data -->
  </table>
</form>

控制器类的请求映射如下:

@RequestMapping(value="/getNode", method=RequestMethod.GET)
public String monitor(ModelMap model, @RequestParam("nodeId") String nodeId) 
{
    model.put("selectedNodeId", nodeId);
    return "getNode";
}

当我运行 Spring 应用程序并单击表单按钮时,控制台上出现以下异常: org.springframework.web.bind.MissingServletRequestParameterException:必需的字符串参数“nodeId”不存在

我现在对如何将表单中的值传递给控制器​​类感到困惑。我也尝试使用@ModelAttribute,但遇到了同样的错误。我也尝试过使用 POST 方法,但没有成功。我基本上不想在浏览器 URL 中显示通过表单提交的值。所以寻找其他选择。

【问题讨论】:

    标签: forms spring-boot


    【解决方案1】:

    在我看来这是一个愚蠢的错误。我没有给输入隐藏类型分配一个名称,而是给它一个 id。因此控制器无法选择参数。 一旦我将 id 更改为 name,它就起作用了!

    【讨论】:

      猜你喜欢
      • 2021-11-17
      • 2019-09-23
      • 2021-04-01
      • 1970-01-01
      • 2017-11-27
      • 2017-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多