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

标签 java html spring-boot thymeleaf

Image of what I have

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

Controller

@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>

波乔

public class Greeting {

private String email;
//getter and setters

尝试

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

最佳答案

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

将电子邮件添加到 session 对象:

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());

循环电子邮件:

<h1>Result</h1>
<th:block th:if="${session.emails NE null}">
  <p th:each="email: ${session.emails}" th:text="'Email: ' + ${email}" />
</th:block>

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

关于java - 如何将 html 输入保存到列表中并在每次提交时显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41048018/

相关文章:

java - 如何操作jtextfield返回类型?

html - 使用 XSLT 将第一个 HTML 表格行转换为每个表格的标题行

spring-boot - Spring Security 5.1.1 OAuth2 客户端连接到 spring-security-oauth2 Auth 服务器

java - 始终使用 jhipster 将日期保存到数据库中的今天日期

spring-boot - 在Spring Boot中获取Keycloak的AccessToken

java - 陷入 java XPath 困境

java - 使用 Arrays.sort 按最后一行对二维数组进行排序

java - 如何从 Hashmap 中删除重复的键

javascript - 使用 html5/javascript 截取整个屏幕的屏幕截图?

javascript - 使用 JS 切换页面颜色