有人能帮我吗?我不明白,为什么@RequestParameter或request.getParameter((不起作用。
我的控制器:
@Controller
public class CheatController extends WebMvcConfigurerAdapter {
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String hello(@RequestParam("gg") String gg, Model model) {
return "hello";
}
}
我的观点:
<html>
<body>
<form action="#" th:action="@{/hello}" method="get">
<input type="text" id="gg" name="gg" placeholder="Your data"/>
<input type="submit"/>
</form>
<span th:if="${gg != null}" th:text="${gg}">Static summary</span>
</body>
</html>
@RequestParam
中似乎有错误
尝试将此行public String hello(@RequestParam("gg") String gg, Model model)
替换为:
public String hello(@RequestParam(required = false, defaultValue = "") String gg, Model model)
我们在上面一行中设置的是,gg不是必需的,如果您的参数gg为空或null,则defaultValue将为"。你可以删除这个选项,但这是一个很好的方式来测试控制器是否工作,如果你确定你将永远收到一个gg参数,你可以删除它。
您应该在表单上使用POST
而不是GET
:
<form action="#" th:action="@{/hello}" method="get">
您还可以将控制器代码简化为:
@Controller
public class CheatController {
@GetMapping("/hello")
public String hello(@RequestParam("gg") String gg,
Model model) {
...
return "hello";
}
}
我不明白它是如何影响获取和发送params的,但它对我有帮助(我评论说代码很平静,它开始工作了(。有人能解释为什么会发生这种事吗?
@Configuration
public class DefaultView extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers( ViewControllerRegistry registry ) {
//registry.addViewController("/hello").setViewName("hello");
registry.addViewController("/all").setViewName("all");
registry.setOrder( Ordered.HIGHEST_PRECEDENCE );
super.addViewControllers( registry );
}
}