HTTP状态400 - 必需字符串参数“xx”不存在

时间:2013-07-31 18:41:50

标签: java jsp spring-mvc

我正在尝试制作一个简单的 Spring MVC 应用程序。

这是我的HelloController

package com.springapp.mvc;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;


@Controller
@RequestMapping("/")
public class HelloController {
@RequestMapping(method = RequestMethod.GET)
public String printWelcome(ModelMap model,@RequestParam(value = "xx",required
=true)String xx) {

        model.addAttribute("message", "Hello Mahdi");

    return "hello";
}
}

JSP 文件:

<html>
<body>
<h1>${message}</h1>
<form action="/" method="GET">
    <input type="text" name="xx">
    <button type="submit">submit</button>
</form>
</body>
</html>

我尝试运行该应用程序时收到以下错误:

HTTP Status 400 - Required String parameter 'xx' is not present

我是 Spring MVC 的新手,请帮忙。

1 个答案:

答案 0 :(得分:6)

您的用例需要两个操作:

  1. 查看和修改<form>
  2. 提交<form>
  3. 这应该映射到两个处理程序方法

    @RequestMapping(method = RequestMethod.GET)
    public String getForm() {
    
        model.addAttribute("message", "Hello Mahdi");
        return "hello"; // assume hello.jsp
    }
    
    @RequestMapping(params={"submit"}, method = RequestMethod.GET)
    public String printWelcome(ModelMap model, @RequestParam(value = "xx",required=true) String xx) {
    
        /*
         Do something with submitted parameter
         and return some view name
        */
    }
    

    如果要访问表单,请向/进行GET。提交表单时,您也可以对/进行GET,但是您需要其他东西来区分请求。在这里,我使用了params="submit"。因此,您需要将提交输入更改为

    <input type="submit" name="submit">submit</button>
    

    或者只是放置您已经使用的参数(params={"xx"})。