为什么在Spring Boot 1.5 @Controller中String参数总是为null?

时间:2019-06-25 09:43:53

标签: java spring-boot spring-mvc controller

我将运行Spring JBoss的Spring 4.1应用程序迁移到SpringBoot 1.5(Spring 4.3.7),然后,我们所有带有String参数的MVC控制器在调用时总是接收空值。

获取参数值集的唯一方法是用StringBuilder替换String。

一个例子,不再工作了:

@RequestMapping(value = "/updateTime", method = RequestMethod.POST)
public String updateTime(@RequestParam(value="time") String time) {
  // time is null in SpringBoot
}

工作(用StringBuffer代替String:

@RequestMapping(value = "/updateTime", method = RequestMethod.POST)
public String updateTime(@RequestParam(value="time") StringBuffer time) {
  // time has expected value
}

HTML:

<form name="updateTime" action="updateTime.html" method="post">
    Time: <input type="text" name="time" placeholder="YYYY-MM-DD HH:mm" value="${time}"/> <br/>
    <input type="submit" name="action" value="   Update   "/>
</form>

即使将控制器中的String参数复合到请求对象中,我也可以得到这种行为。

我在这里做错什么了吗?

1 个答案:

答案 0 :(得分:2)

INFO :Spring使用HTML名称属性。 您应该具有相同的名称和RequestParam值。 注意:在HTML表单操作中,最好也与RequestMapping值相同。 试试这个:

<form name="updateTime" action="/updateTime" method="post">
    Time: <input type="text" name="time" placeholder="YYYY-MM-DD HH:mm" value="${time}"/> <br/>
    <input type="submit" name="action" value="   Update   "/>
</form>

@RequestMapping(value = "/updateTime", method = RequestMethod.POST)
public String updateTime(@RequestParam(value="time") String time) {
  // time is null in SpringBoot
}