我在做一個使用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