我在做一个使用Spring,JSP和Tiles的Java Web项目。在我们上一个项目中,我们使用Facelets <ui:composition>
和<ui:define>
标签将JS和CSS库包含在模板的标题中。我想知道是否有办法使用Tiles来做同样的事情。如何做使用瓷砖的类Facelets模板组合?
这里就是我想要做的Facelets主模板的一个例子:
<html
xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:sec="http://www.springframework.org/security/facelets/tags">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta>
<title><ui:insert name="title">MediMercado</ui:insert></title>
<link href="${request.contextPath}/css/layout.css" rel="stylesheet" type="text/css" />
<ui:insert name="additional-js"></ui:insert>
</head>
<body>
<ui:insert name="content">
<ui:include src="main-content.xhtml"/>
</ui:insert>
</body>
</html>
页面模板:
<ui:composition template="/layout/layout.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets">
<ui:define name="additional-js">
<script src="${request.contextPath}/js/jquery.js" type="text/javascript"></script>
</ui:define>
<ui:define name="content">
<h1>Just an example</h1>
</ui:define>
</ui:composition>
所以在这个例子中jQuery库我们页面模板已包含在主模板的HTML头部中。
我们该如何使用Tiles来做到这一点?
JSTL,主要是流量控制和实用标签库,提供关于模板完全无关。所以忘了它。我已经从问题中删除了JSTL参考,这样它就不那么嘈杂。此外,Facelets在技术上是JSP的继承者,所以我真的很想知道为什么你会回到JSP这里。除了基本上是JSP taglib的Tiles之外,您还可以考虑查看FreeMarker或Velocity,它们是独特的模板技术。但是我没有把他们全都做,我不能详细谈谈。 – BalusC 2011-05-10 03:14:59
感谢您的更正!我目前正试图了解Tiles教程,基本上我们从Facelets改变了,因为我们使用Spring Security和facelets会给我们带来一些会话问题。由于我无法决定使用Tiles,我必须使用它! – Jeeba 2011-05-11 14:19:06
你的意思是由Facelets创建不必要的会话?这已在Mojarra 2.1.x中修复。考虑更新JSF库http://javaserverfaces.java.net/ – BalusC 2011-05-11 14:24:16