我正在编写非常简单的Spring MVC应用程序(刚开始学习)。它只有一个jsp页面。在运行这个应用程序之后(我使用Tomcat,并不是什么大不了的事)它必须显示带有Hello的页面,如果我向url发送一些参数(例如someURL /?name = mike),它必须是带有Hello mike的页面
这是代码
@Controller
@RequestMapping("/")
public class HelloController {
@RequestMapping(method = RequestMethod.GET)
public String printWelcome(@RequestParam("name") String param, ModelMap model) {
if (param == null || param.isEmpty())
model.addAttribute("message", "Hello");
model.addAttribute("message", "Hello " + param);
return "hello";
}
}
和hello.jsp:
<html>
<body>
<h1>${message}</h1>
</body>
</html>
问题是如果我在url中没有参数,则不显示Hello页面,而是显示错误
答案 0 :(得分:1)
@RequestParam
注释具有required
属性,您可以将其设置为false
(默认情况下为true
)。
public String printWelcome(@RequestParam(value = "name", required = false) String param, ModelMap model) {
只有在这种情况下,Spring才会为null
带注释的参数提供@RequestParam
参数。
答案 1 :(得分:0)
您可以设置defaultValue
的{{1}}参数。用作后备的默认值。提供默认值会隐式设置@RequestParam
。
required() to false
答案 2 :(得分:0)
您需要更改方法名称以包含required = false
作为name参数,否则默认情况下需要将方法签名更改为以下内容:
public String printWelcome( @RequestParam(value = "name", required = false) String param, ModelMap model)
从Spring文档:
默认情况下,需要使用此注释的参数,但您可以 通过设置@RequestParam指定参数是可选的 必需属性为false(例如,@ RequestParam(value =“id”, 需要=假))。 http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html