我即将选择组织我的观点(使用spring-mvc,但这不应该太重要)
据我所知,有6个选项(尽管它们并不相互排斥):
<jsp:include><%@ include file="..">Tiles和Sitemesh可以分组; 所以可以的Freemarker和速度.每个小组中使用哪一个不是这个讨论的问题,有足够的问题和讨论.
这是一个有趣的读物,但不能说服我使用瓷砖.
我的问题是 - 这些框架提供的内容 <@ include file="..">与JSTL 无法正常完成.要点(一些来自文章):
包括部分页面,如页眉和页脚 - 之间没有区别:
<%@ include file="header.jsp" %>
和
<tiles:insert page="header.jsp" />
在标题中定义参数 - 如标题,元标记等.这非常重要,尤其是从SEO的角度来看.使用模板选项,您只需定义每个页面应定义的占位符.但是你可以在jsp中使用JSTL,使用<c:set>(在包含页面中)和<c:out>(在包含的页面中)
布局重组 - 如果要在菜单上方移动面包屑,或在另一个侧面板上方移动登录框.如果页面包含(使用jsp)组织不当,则可能需要在这种情况下更改每个页面.但是如果你的布局不是太复杂,并且你把常见的东西放在页眉/页脚中,就没有什么可担心的了.
公共组件和特定内容之间的耦合 - 我没有发现这个问题.如果要重用某些片段,请将其移动到不包含任何页眉/页脚的页面,并在需要的地方包含它.
效率 - <%@ include file="file.jsp" %>比其他任何东西都更有效,因为它被编译一次.所有其他选项都被解析/执行多次.
复杂性 - 所有非jsp解决方案都需要额外的xml文件,其他包括,预处理器配置等.这既是学习曲线又是引入更多潜在的失败点.此外,它使支持和更改变得更加乏味 - 您必须检查许多文件/配置以了解正在发生的事情.
占位符 - 速度/自由标记比JSTL更多吗?在JSTL中,您放置占位符,并使用模型(放置在请求或会话范围内,由控制器)来填充这些占位符.
所以,说服我除了普通的JSP之外我应该使用上面的任何框架而不是/.
我试过从我的Sitemesh装饰器中排除某些页面,但它似乎没有遵循自己的逻辑:
<decorators>
    <excludes>
        <pattern>/register</pattern>
    </excludes>
</decorators>
Sitemesh有哪些替代方案可以作为主要使用普通JSP/JSTL的Spring MVC应用程序中的替代品?