【问题标题】:springboot Thymeleaf adding varying List fieldsspringboot Thymeleaf 添加不同的列表字段
【发布时间】:2020-01-25 18:08:03
【问题描述】:

我正在使用 Thymeleaf 来生成 html 文件以用于某些内容共享目的。

下面是html模板

    <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>Testing</title>
</head>
<body>
    <table>
        <tbody>
            <tr>
                <td>Message: </td>
                <td><p th:text="|${Id}|"> Id</p></td>
                <td><  th:text="|${userDetails}|"> </td>


            </tr>
        </tbody>
    </table>
</body>
</html>

下面是我尝试生成不同的html表格或段落的代码

   private static final String starttag= "<p><b>$$</b></p>";
    private static final String pretag= "<pre<$$</pre>";

    public String build(Message model) {
        Context context = new Context();
        context.setVariable("Id", model.getId());

        List<user> users = model.getUsers();

        StringBuilder userDetails = new StringBuilder("");
        for(user: users) {
            String getDepartment = starttag.replace("$$",user.getDepartment());
            userInfo = userInfo + pretag.replace("$$", "Name:"+ user.getName());

            userDetails.append(userInfo);
        }
        context.setVariable("userDetails", userDetails);
        return templateEngine.process("userTemplate", context);
    }


} 

但我得到的结果如下

<td><p>123 Id</p></td>
                <td> &lt;p&gt;&lt;b&gt;Computer Science &lt;/b&gt;&lt;/p&gt; Name:testuser1&lt;pre&lt;&lt;/pre&gt;</span> </td>

如何在html中添加不同的用户列表

我想要像下面这样

Testuser1

计算机科学

Testuser2

电气

【问题讨论】:

    标签: java spring-boot thymeleaf


    【解决方案1】:

    您可以直接将user 对象传递给模板:

    public String build(Message model) {
            model.setAttribute("Id", model.getId());
    
            List<user> users = model.getUsers();
            model.setAttribute("users", users);
    
            return "userTemplate";
        }
    

    然后用for循环访问模板中的字段:

    <tr th:each="user: ${users}">
        <td th:text="${user.department}" />
        <td th:text="${user.name}" />
    </tr>
    

    这是一个简单的行,您可以使用自己的 html 将其添加到模板中对其进行自定义。这里的重点是您不必管理控制器类中的 html 代码,您只需准备模型。在 html 代码中定义您的模板。
    您可以获得有关this article on Baeldung 的更多信息、this question on SOthis question 的示例(不是您的问题,但可以帮助您解决问题:))。
    如果不够清楚,请评论答案,我会尝试添加一些细节。

    【讨论】:

    • 实际上我需要将该 html 转换为字符串,并且需要传递给一些电子邮件 API。您已为 SpringUI 共享,如何将其输入字符串...?当前 String 被读取为 &lt&gt 等
    • 我不知道该怎么做,但是看看this article on thymeleaf.org的例子,模板部分非常相似。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-10
    • 2021-04-05
    • 2017-08-10
    • 2019-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多