有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

带有主模板和子视图的web应用程序Java HTML视图引擎

我正在拼命寻找一个Java HTML视图引擎,它可以满足三个主要需求:

  1. 支持主模板页面
  2. HTML模板可以用作其他模板中的子视图
  3. HTML模板不必由配置文件或Java类支持

它适用于主要由只读页面和一些带有表单的页面组成的Java web应用程序。我很可能会将其与MVC框架结合使用

主模板页面

HTML的主要结构应该由主HTML页面定义。不同的页面只提供核心内容,这些内容被放入母版页中,以创建最终页面。这不仅仅是包含页眉和页脚

子视图

页面应该能够使用其他HTML页面/模板作为其自身内容中的子视图。它应该能够传递至少一个参数,以提供子视图需要显示的数据。此外,应该可以递归地使用子视图中的其他子视图。同样,这超出了一个简单的包含机制

没有支持

HTML模板应该由一个文件组成,基本上是一个HTML或XML页面,其中某些部分将根据提供的数据进行替换。他们不需要任何额外的(每个模板)配置文件。而且他们不需要实现任何Java类作为支持

我已经看过很多Java模板引擎。但它们似乎都不符合这些要求。(不过,在.NET世界中,ASP.NET MVC和Razor视图引擎将是一个完美的选择。)

更新:

到目前为止,我已经研究了以下引擎(如果我忽略了使用其中一个引擎来实现我的要求,请告诉我):

  • JSP:只有一个非常基本的包含机制,没有主模板或子视图的适当范围等
  • Velocity:有一个稍微高级的包含机制,但没有母版页
  • FreeMarker:包含机制,无母版页
  • Tapestry:良好的基于组件的子视图以及模板机制。然而,如果没有框架的其余部分,使用模板引擎部分似乎并不容易,因为框架太以页面为中心,无法与MVC框架结合
  • Tiles:每个最终页面需要两个jsp页面。这两个层(tiles和jsp)使其过于复杂,尤其是对于子视图

更新(2): 我改变了一些术语:视图引擎而不是模板引擎子视图而不是组件


共 (1) 个答案

  1. # 1 楼答案

    您还没有真正了解模板引擎。JSP、Velocity和FreeMarker不是模板引擎(你的意思是模板引擎)。这些语言允许动态生成标记,并从Java对象中获取数据以生成HTML的形式显示。Tapestry是一个基于组件的完整web应用程序框架

    如果使用JSP生成HTML页面,可以在JSP(如Tiles或SIteMesh)之上使用模板引擎,该引擎将处理模板,从而允许整个页面的每个“组件”都有一个JSP。如果没有Stripes、Spring MVC或Struts2等web MVC框架,通常不应该使用JSP。所有这些都有自己的模板支持,和/或支持集成另一个模板,如SiteMesh或Tiles