Spring和动态包含JSP文件

时间:2011-01-24 11:17:02

标签: java spring jsp spring-mvc

我开始在Spring 3(和J2EE)中开始构建Web应用程序。 看看petclinic的例子,我看到程序员创建了很多JSP片段,比如header,includes,footer,然后使用静态包含将它们拼接在一起。无论如何我想要的是我可能有一个基页,如Base.jsp,并且可以包含这样的内容:

<body>
 <jsp:include page="${subpage}"></jsp:include>
</body>

原因是我想要一个主页面,然后能够放入控制器返回的ModelAndView,在每种情况下显示哪些页面部分(附有数据)。这样可行,但如果找不到${subpage},则jsp名称错误或缺失,它不会出错。我想要更多的错误检查...

这是最佳和推荐的方法吗?如果这对我的想法似乎是一个好主意,那么这样做的正确方法是什么?

4 个答案:

答案 0 :(得分:2)

您可能希望使用Apache Tiles 2集成来管理JSP文件。 Spring有很好的集成支持Apache Tiles。它还会显示页面中是否存在错误。我在http://krams915.blogspot.com/2010/12/spring-mvc-3-tiles-2-integration.html

上举了一个例子

答案 1 :(得分:1)

您的subpage似乎还有其他引号。摆脱它们。例如:

<c:set var="subpage" value="/jsp/index.jsp" />

如果必须在控制器或servlet中设置它 - 只需使用request.setAttribute("subpage", "/jsp/index.jsp")

答案 2 :(得分:0)

对于错误检查,您可以使用:

<c:catch var="myException">
   <c:import url="${subpage}" />
</c:catch>

以后您可以查看:

<c:if test="${myException != null}">
...
</c:if>

答案 3 :(得分:0)

查看Sitemesh(http://www.opensymphony.com/sitemesh)。它是一个基于servlet过滤器的页面布局系统,易于使用。我已经完成了许多使用Spring MVC的项目,并且它运行良好。