如何将html输入保存到列表中并在每次提交时显示?

时间:2016-12-08 20:11:52

标签: java html spring-boot thymeleaf

Image of what I have

我目前拥有上面显示的图片。我可以在文本框中输入文本,然后单击“结果”下的“提交”。如何在不覆盖以前消息的情况下编写脚本?例如;当我输入另一封电子邮件并点击提交时,它应显示在Hello@gmail.com下面,而不是覆盖它。此外,当用户单击提交时,如何将其响应保存在与页面上显示的内容对应的列表中?如果文本被删除,它也应该从java列表中删除它。

控制器

@Controller
public class EmailController {
    @GetMapping("/editprop")
    public String greetingForm(Model model) {
        model.addAttribute("greeting", new Greeting());
        return "editprop";
    }

    @PostMapping("/editprop")
    public String greetingSubmit(@ModelAttribute Greeting greeting) {
        System.out.println(greeting.getEmail() + "@@@@@@@@");      
        return "editprop";
    }
}

editprop thymeleaf

<h1>Form</h1>
    <form action="#" th:action="@{/editprop}" th:object="${greeting}" method="post">
        <p>Email: <input type="text" th:field="*{email}" /></p>
        <p><input type="submit" value="Submit" /> <input type="reset" value="Reset" /></p>
    </form>



<h1>Result</h1>
<p th:text="'Email: ' + ${greeting.email}" />
<a href="/greeting">Submit another message</a>

POJO的

public class Greeting {

private String email;
//getter and setters

尝试

为了不覆盖以前的文本,我决定创建一个表并使用th:foreach iterStat:来显示列表中的每个值。所以,我真正的问题是每次点击sumbit时如何将值保存到列表中?

1 个答案:

答案 0 :(得分:0)

  • 创建一个列表并将其放入会话中。
  • 在提交时,将用户提供的值添加到列表中。
  • 在页面上,循环显示列表项并显示它们。

向会话对象添加电子邮件:

pluralize(@quantity, t("interval._#{@interval}"))

循环播放电子邮件:

public String greetingSubmit(@ModelAttribute Greeting greeting, HttpSession session) {
  List<String> emails = (List<String>) session.getAttribute("emails");
  if (emails == null) {
    session.setAttribute("emails", emails = new ArrayList<String>());
  }

  emails.add(greeting.getEmail());

在实际的应用程序中,您可能会将电子邮件存储在数据库中,而不是使用这样的会话。