Java 弹簧和布局视图

Java 弹簧和布局视图,java,spring,velocity,tiles,Java,Spring,Velocity,Tiles,我对Spring(而不是Java)是新手,我就是不能对所有的tiles东西都抱着浓厚的兴趣。我想做的是为JavaScript包含创建一个带有占位符的布局。 在.Net中,我可以定义包含一些内容占位符的母版页 布局。大师 <%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

我对Spring(而不是Java)是新手,我就是不能对所有的tiles东西都抱着浓厚的兴趣。我想做的是为JavaScript包含创建一个带有占位符的布局。 在.Net中,我可以定义包含一些内容占位符的母版页

布局。大师

<%@ 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具有类似的功能,但我不知道如何从互动程序中定义占位符的内容。

您需要的是一个支持模板继承和定义任意占位符的模板引擎

我不知道有多少是这样的(在java世界中,有一种偏向于模板组合,而这正是普通jsp:include、tiles等所做的)

支持继承,并且有一个for-spring添加了对ST的支持,但是我不知道插件是否支持模板继承,并且ST-heritation-AFAIK不允许您定义占位符

另一个选择是

看起来它符合你的要求。 例如(取自其网站):

基础模板

<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>

{%block title%}jangodh???{%endblock%}
{%block content%}{%endblock%}
{%block footer%}
©版权所有2010
{%endblock%}
模板,它扩展了基础模板:

{% 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 %}
{%extends“base.html”%}
{%block title%}你好{{user.name}{%endblock%}
{%block content%}
距离
    {posts%%中的post为%s}
  • {{post.title}
  • {%endfor%}
{%endblock%}

它有。

我正在使用Apache Tiles解决同样的问题,而且使用起来非常简单。。。 只需谷歌ApacheTiles+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>

瓷砖快速入门
欢迎来到Tiles 101
瓷砖101主体内容。

试试看,这几乎就是我要找的。但是,是否可以从另一个互动程序中定义title属性的内容,而不必在互动程序定义中配置任何内容?是的,您可以,很抱歉,您必须查找它,我不记得了:-(@Mato给出一个你想要的例子do@soulcheck我想要的是,每个磁贴都可以将Java脚本插入到页面标题中。
<tiles-definitions>
  <definition name="header" template="/fragments/header.jsp">
  </definition>
</tiles-definitions>