如何从url获取参数

时间:2013-12-16 05:14:16

标签: java jsp spring-mvc

我正在编写非常简单的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页面,而是显示错误

3 个答案:

答案 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