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

时间:2017-08-29 09:56:24

标签: spring-mvc thymeleaf

任何人都可以帮助我。我无法理解,为什么@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>

3 个答案:

答案 0 :(得分:0)

好像你在@RequestParam

中有错误

尝试将此行替换为public String hello(@RequestParam("gg") String gg, Model model)

public String hello(@RequestParam(required = false, defaultValue = "") String gg, Model model)

我们在上面的行中设置的是gg不是必需的,如果你的param gg为空或null,则defaultValue将为“”。您可以删除此选项,但这是测试Controller正常工作的好方法,如果您确定您将始终收到gg参数,则可以将其删除。

答案 1 :(得分:0)

should be using POST instead of GET on your form

Valid State(Id(int PK),Abbreviation(char) ,Name, IsActive)

您还可以将控制器代码简化为:

<form action="#" th:action="@{/hello}" method="get">

答案 2 :(得分:0)

我无法理解它如何影响获取和发送参数,但它帮助了我(我评论说代码的和平并开始起作用)。谁能解释为什么会这样?

@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 );
    }
}