如何从thymeleaf中检索输入文本?

时间:2016-12-02 14:36:57

标签: java spring-boot thymeleaf

我正试图从百万美元的输入中获取一个值到我的java类中。

来自百里香的简单脚本

<h1>Form</h1>
<form action="#" th:action="@{index}" th:object="${emails}" method="post">
    <p>Emails: <input id="emailbox" type="text" th:field="*{email}"
                      placeholder="Enter e-mails: eg; Foo@gmail.com, Bar@yahoo.com"/></p>
    <p><input type="submit" value="Submit"/> <input type="reset" value="Reset"/></p>
</form>

我如何能够将输入的文本检索到我的java类中?

控制器

@Controller
public class IndexController {

@RequestMapping(value = "/index", method = RequestMethod.GET)
public ModelAndView getdata() throws IOException {
    ModelAndView model = new ModelAndView("index");
    model.addObject("emails", new MailModel());
    return model;
}

@PostMapping("/index")
public String emailSubmit(@ModelAttribute MailModel emails) {
    System.out.println(emails.getEmail());
    return "index";
}

我可以运行我的应用程序并查看百日咳视图。当我在文本框中输入一些文本并点击提交时。我收到错误。

错误消息

java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'emails' available as request attribute

我的应用程序是使用Springboot,Java和Thymeleaf创建的。我究竟做错了什么? ModelandView可能无法与PostMapping一起使用吗?我也跟着https://spring.io/guides/gs/handling-form-submission/,我得到了那个样本,但是当我试图遵循逻辑并实现我的项目时。它不起作用。

1 个答案:

答案 0 :(得分:1)

在您的HTML中,将th:action="@{index}"更改为th:action="@{/index}"。这将使Thymeleaf能够正确解决它。