【发布时间】:2014-07-05 13:44:24
【问题描述】:
我正在寻找一种使用 Apache Tiles 以类似于 ASP.NET MVC 4 的方式管理 CSS 和 JS 资源的好方法。
在 ASP.NET MVC4 中,您有 ContentBundles 和 ScriptBundles,您可以简单地编写
@Scripts.Render("~/bundles/jquery");
它将使用所有正确的语法插入您的 css/脚本。然后为了使它更好,@RenderSection("JavaScript", required:false) 允许您以正确的包含顺序插入 JavaScript,并在视图上定义它。
@section JavaScript
{
<script type="text/javascript" src="@Url.Content("/Scripts/jquery.tablesorter.min.js")"></script>
<script type="text/javascript" src="@Url.Content("/Scripts/Custom/Roster.js")"></script>
}
为了简短起见,我基本上想在 Spring MVC 中使用 Apache Tiles 做类似的事情。有可能吗?
我最初的想法和尝试是在 tile 配置文件中创建一个“捆绑包”作为定义,但随后需要一些 JSP 代码来正确插入和创建 html 语法。有没有人曾经尝试过这个或找到一个好的解决方案?
我在 http://www.coderanch.com/how-to/java/TilesJavaScript 找到了这个示例,但它似乎在 Tiles 3 的语法上不正确。
master-layout.jsp
">
以下是对多个 js 文件执行此操作的方法:
tiles-defs.xml
<!-- Child page Definition -->
<definition name="child.page" extends="master.page">
<put name="title" value="Child Page" />
<put name="jsfile" value="app.childpage.jsfiles.tile" />
</definition>
<!-- JS Files Definition tile -->
<definition name="app.childpage.jsfiles.tile" path="/layouts/jslayout.jsp">
<putList name="jsfilesList">
<add value="/config/childpage_jsfile1.js"/>
<add value="/config/childpage_jsfile2.js"/>
<add value="/config/childpage_jsfile3.js"/>
</putList>
</definition>
jslayout.jsp
<tiles:useAttribute id="list" name="jsfilesList" classname="java.util.List" />
<c:forEach var="jsfileName" items="${list}">
<script src="<%=request.getContextPath()%><c:out value='${jsfileName}' />"></script>
</c:forEach>
本质上,我想要一种干净的方式来包含我所有的 JavaScript 和 CSS,使用类似于 ASP.NET MVC 捆绑方法的 Apache Tiles。这样我就不必将链接硬编码到需要额外内容的每个 JSP 文件中。
【问题讨论】:
标签: jsp spring-mvc apache-tiles