Весна и макеты - PullRequest
       44

Весна и макеты

2 голосов
/ 05 декабря 2011

Я новичок в Spring (не в 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 имеет аналогичную функциональность, но я не мог понять, как определить контент для заполнителей из плитки.

Ответы [ 2 ]

1 голос
/ 05 декабря 2011

Что вам нужно, так это шаблонизатор с поддержкой наследования шаблонов и определением произвольных заполнителей.

Я не знаю многих, которые делают (в мире Java есть склонность к компоновке шаблонов, и это то, что делает обычный jsp: include, tile и т. Д.).

StringTemplate поддерживает наследование, и есть плагин для Spring, который добавляет поддержку ST, но я не знаю, поддерживает ли плагин наследование шаблонов и 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 %}

Имеет поддержку Spring MVC .

0 голосов
/ 05 декабря 2011

Я использую Apache Tiles для той же проблемы, и ее очень просто использовать ... просто Google Apache Tiles + Spring, чтобы увидеть, как соединить их вместе (простая конфигурация 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>

После этого настройте файл tile.xml с отображением, чтобы заменить включения некоторыми допустимыми страницами и оставитьверхний и нижний колонтитулы по умолчанию (я делаю что)

как этот

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

вам просто нужно дать Spring String для этой JSP, если она называется

у вас есть полное руководство здесь Apache Tiles

...