无法将请求参数从视图获取到控制器Spring MVC



有人能帮我吗?我不明白,为什么@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 );
}
} 

相关内容

  • 没有找到相关文章

最新更新