使用Thymeleaf和Spring MVC构建BIG视图

时间:2014-05-01 11:46:40

标签: spring-mvc thymeleaf

我将使用Spring MVC,Thymeleaf和Flying-saucer在Java中生成pdf报告(大约20张幻灯片)。我希望能够根据不同的幻灯片构建代码,以便我可以轻松地添加和删除幻灯片,而不是在一个块中包含所有幻灯片的所有代码。最后,在Spring MVC和Thymeleaf完成之后,我想我会有很多XHTML和CSS准备发送到Flying-saucer进行PDF生成。

我还没有使用Spring MVC那么多,但我的感觉是你先做控制器的东西,例如获取数据,处理数据,然后在模型上放置必要的数据,以便Thymeleaf可以继续并根据模板和模型上的数据渲染视图。

如何以良好的模块化方式划分java和Thymeleaf中的代码部分?任何人都有一个好的设计可以受到启发,或者可以指向我在网上的某个地方,我可以找到关于此的好信息?

1 个答案:

答案 0 :(得分:1)

在您的情况下,我建议将Thymeleaf模板分为三个部分 - 主模板,幻灯片和内容模板。您可以从Spring MVC控制器动态填充报表内容,也可以在Thymeleaf中以静态方式构建报表内容。

我提供骨架模板结构,因为我认为它是最好的(所有模板应该在根模板路径上)。如果要添加幻灯片,只需创建包含内容的新模板,然后将新行插入主模板。如果要删除幻灯片,只需删除相应的行。

  

主模板 - index.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
</head>
    <body>
        <th:block th:include="slide :: slide" th:with="content=${'content1'}"></th:block>
        <th:block th:include="slide :: slide" th:with="content=${'content2'}"></th:block>
        <th:block th:remove="tag" th:include="slide :: slide" th:with="content=${'content3'}"></th:block>
    </body>
</html>
  

幻灯片模板 - slide.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
</head>
    <body th:fragment="slide">
        <div class="slide">
            <div th:replace="${content} :: content"></div>
        </div>
    </body>
</html>
  

内容模板1 - content1.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
</head>
    <body>
        <ul th:fragment="content">
            <li>Content 1</li>
        </ul>
    </body>
</html>
  

内容模板2 - content2.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
</head>
    <body>
        <span th:fragment="content">Content 2</span>
    </body>
</html>
  

内容模板3 - content3.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
</head>
    <body>
       <p th:fragment="content">
           Content 3
       </p>
    </body>
</html>