2011-12-05 75 views
2

我是新來的春天(不是Java),我只是不能包裹我的頭圍繞所有瓷磚的東西。我想要做的是爲JavaScript包含一個佔位符的佈局。 在.net中我可以定義一個包含一些內容佔位符的母版頁。春天和佈局意見

Layout.Master

<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <asp:ContentPlaceHolder ID="javascripts" runat="server" /> 
</head> 
<body> 
    <asp:ContentPlaceHolder ID="content" runat="server" /> 
</body> 
</html> 

在了行動,那麼我可以定義佔位符應如何被替換的視圖。

的Index.aspx

<asp:Content ID="Content" ContentPlaceHolderID="content" runat="server"> 
    This is the body content 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="javascripts" runat="server"> 
    <script src="foo.js" type="text/javascript" charset="utf-8"></script> 
</asp:Content> 

我該怎麼辦,在春天?我已經看到VelocityLayoutView具有類似的功能,但我無法弄清楚如何從一個tile中爲佔位符定義內容。

+0

嘗試[此鏈接](http://viralpatel.net/blogs/2010/07/spring-3-mvc-tiles-plugin-tutorial -example-eclipse.html) – aishwarya

+0

這幾乎是我要找的。但有沒有可能從另一個tile中爲title屬性定義內容,而無需在tiles定義中配置任何內容? – Mato

+0

是的,你可以,怎麼 - 對不起,你必須查找它,我不記得手:-( – aishwarya

回答

1

您正在尋找的是一個支持模板繼承和定義任意佔位符的模板引擎。

我不知道有很多這樣做(在Java世界中存在對模板構成的偏見,這就是plain jsp:include,tiles等)。

StringTemplate支持繼承和有春天,增加了ST的支持plugin,但我不知道是否該插件支持模板繼承和ST繼承AFAIK不會讓你定義的佔位符。

另一種選擇是Jangod

看起來它,你在找什麼。 例如(從他們的網站獲得):

基地模板

<html> 
    <head> 
     <title>{% block title %}Jangod ????{% endblock %}</title> 
     <link rel="stylesheet" href="style.css" /> 
    </head> 
    <body> 
     <div id="content"> 
      {% block content %}{% endblock %} 
     </div> 
     <div id="footer"> 
      {% block footer %} 
      © Copyright 2010 
      {% endblock %} 
     </div> 
    </body> 
</html> 

模板,其延伸基本模板:

{% extends "base.html" %} 
{% block title %}Hello {{user.name}}{% endblock %} 
{% block content %} 
    <h1>Recencies</h1> 
    <ul> 
     {% for post in posts %} 
      <li>{{post.title}}</li> 
     {% endfor %} 
    </ul> 
{% endblock %} 

它具有support for Spring MVC

0

我使用Apache瓷磚爲同樣的問題,這是非常簡單的使用... 只是谷歌的Apache +瓷磚春天來看看如何將它們裝配起來(一個簡單的XML配置)

只需用你的主佈局創建一個Layout.jsp,你提到的包含。

<html> 
    <head><title>Tiles Quickstart</title><head> 
    <body> 
    <div id="header"> 
     Welcome to Tiles 101 
    </div> 

    <div id="body"> 
     Tiles 101 body content. 
    </div> 

    <div id=footer"> 
     &#169; 2007, Apache Software Foundation 
    </div> 
    </body> 
</html> 

之後,設置瓷磚。XML與映射到替代包括一些有效的頁面和將頁眉和頁腳爲默認值(我做什麼)

這樣

<tiles-definitions> 
    <definition name="header" template="/fragments/header.jsp"> 
    </definition> 
</tiles-definitions> 

的你只需要給Spring爲的字符串JSP,如果它被稱爲

你有一個完整的教程這裏Apache Tiles