这是一个模糊而宏大的问题,但希望我能用尽可能少的具体例子来解释它。
我们最近改用 Spring MVC 作为我们的应用程序框架,但在开发过程中发现了一个(实际上只有一个)限制因素:如何使用适当的模型包含动态视图。
例如,我们正在创建一个包含可重用片段的页面。在左侧,我们有一个“随机 q 和 a”片段,而在顶部,我们有一个公共“导航”片段。
每个片段都需要不同的模型。我一直在指示创建“导航”部分的开发人员创建与“q 和 a”模型、控制器和逻辑完全独立的导航模型、控制器和视图。这是为了鼓励可重用性,如果另一个页面布局需要“导航”而不是“q 和 a”,反之亦然。
你知道我要说的是什么吗? “主页”页面包含两个片段,但最好不必“知道”片段需要哪个控制器/模型/视图。
我一直在指导开发人员按以下方式使用 Spring MVC......
home.jsp 示例:
<body>
<div class="top">
<jsp:include page="/navigation"/>
</div>
<div class="left">
<jsp:include page="/randomgQuestion"/>
</div>
</html>
这个想法是在请求时,必要的其他片段将与它们所需的模型一起动态地拉入。
这是一个好主意吗?有没有更好的办法?
欢迎任何讨论,但请具有建设性。
目标是可重用性和愚蠢的观点。
我将根据要求提供任何更新或澄清。谢谢。
您所描述的感觉有点像门户/portlet 功能 (JSR-286) => 即应用程序(门户)生成由其他嵌入式应用程序(portlet)生成的内容组成的网页。门户网站是使用 INCLUDE 调度(这相当于<jsp:include>
)以提供 JSR-286 功能。所以从这个角度来看,使用<jsp:include>
提供可重用的内容块,每个内容块都有自己的 MVC 生命周期(尽管共享相同的请求属性命名空间)...
另请注意,如果您只有一个简单的片段,并且希望在 JSP 之间重用它,则可以使用一个简单的片段<%@include file="menu.jspf" %>
可能更合适。
我还觉得应该提到 JSP 标签功能...将可重用内容制作为 JSP 标签文件(/WEB-INF/tags/[taglib-folder/]*.tag
)可以提供一些高级的布局功能。对于更高级的功能,您可以实现基于 Java 的标签库。
为了说明我如何在一个项目中使用自定义标记和包含指令,以下是一个 JSP 视图:
<%@ include file="/WEB-INF/taglib.jspf" %>
<layout:admin section="test">
<layout:admin-context />
<layout:admin-content>
<h1><spring:message code="test.overview.heading" /></h1>
<h2><spring:message code="test.detail.heading" /></h2>
<%@ include file="test-detail.jspf" %>
</layout:admin-content>
</layout:admin>
我们没有包含调度的用例(即<jsp:include />
)将需要。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)