通过 Spring MVC 框架包含其他 JSP 是一个好主意吗?

2023-12-05

这是一个模糊而宏大的问题,但希望我能用尽可能少的具体例子来解释它。

我们最近改用 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(使用前将#替换为@)

通过 Spring MVC 框架包含其他 JSP 是一个好主意吗? 的相关文章

随机推荐

  • 在Qt中fork后获取进程的PID

    我正在创建一个成功分叉的 Qt C 控制台应用程序 当我在 fork 之前调用 QCoreApplication applicationPid 然后在 fork 之后 在子进程中 调用 QCoreApplication applicatio
  • 如何正确锁定 Task.Run() 块

    我正在编写一个应用程序 其中使用多种方法来访问某些共享资源 因此通过以下方式实现了一些安全性lock thisLock 一切都很好 直到我不得不在异步任务中使用资源 这是代码 private object thisLock new obje
  • 如何使用 Razor 语法在 ASP.NET MVC 4 中获取文本中 URL 的链接?

    我有一个带有文本字段的模型 文本can包含多个 URL 它不必包含 URL 也没有特定的格式 Using Html DisplayFor model gt model TextWithSomeUrls 当然 文本和 URL 的显示方式与普通
  • 使用 python2 和 python3 的相同代码进行编码+加密+填充时出现问题[重复]

    这个问题在这里已经有答案了 免责声明 我了解以下内容not适合在生产环境中提供 安全 它只是比对存储在我的系统上的敏感数据使用 XOR 或 rot13 更好一点 我将以下代码放在一起 以允许我对这些敏感值使用 AES 加密 AES 需要 1
  • 无法在真实设备上使用 Appium 识别 iOS hyprid 应用程序自动化中 WEBVIEW 中的元素

    我试图使用 ionic2 Angular2 和 typescript 来自动化混合应用程序构建 我正在使用 C 来编写代码 测试在 BDD specflow 中 版本 iOS 9 3 1 代码 7 3 阿皮姆 1 4 13 将上下文切换到
  • TypeScript 实用程序类型优于可区分的联合类型

    给定一个像这样的受歧视联合类型 type HomeRoute name Home type PageRoute name Page id number type SearchRoute name Search text string lim
  • 如果您可以解码 JWT,它们的安全性如何?

    如果我得到一个JWT我可以解码有效负载 这如何安全 难道我不能从标头中获取令牌 解码并更改有效负载中的用户信息 然后使用相同的正确编码秘密将其发送回来吗 我知道它们必须是安全的 但我真的很想了解这些技术 我缺少什么 JWT 可以进行签名 加
  • 从 VBA 运行 Telnet 会话

    我有一个可以执行 FTP 功能的 VBA 库 我也想执行 telnet 操作 目前 我正在编写一个 Perl 脚本 该脚本基于文本文件执行 telnet 但我想从 VBA 内部本地驱动 telnet 连接 有人有这方面的资料吗 我不想使用加
  • 如何使用依赖属性来替换UserControl构造函数中的参数?

    我注意到以前有人问过类似的问题 但我没有找到任何详细的例子 我有一个winform程序 它的构造函数有一个参数cn public AddFailure ProSimConnect cn constructor in winform this
  • 为什么BFS的复杂度是O(V+E)而不是O(E)? [复制]

    这个问题在这里已经有答案了 这是一个通用的 BFS 实现 For a connected graph with V nodes and E total number of edges we know that every edge will
  • 自定义GridView删除按钮

    如何自定义自动生成的命令按钮 例如Delete 我想在删除时添加客户端确认 同时我希望在设置时生成此按钮AutoGenerateDeleteButton true 是否可以 我可以这样添加自定义按钮
  • 您请求的商品无法购买

    我正在尝试在 Android 应用程序中测试订阅 我用地下城的例子 我上传的 apk 未发布 但订阅项目已发布 我在开发控制台中添加了新的测试帐户 gmail 它不是开发人员帐户 我将手机重置为出厂状态并添加了测试帐户 我安装了签名的apk
  • 如何从以破折号开头的远程名称中提取

    在 git 中 可以使用以下命令处理远程名称 人物明星 例如 我们可以添加一个以 只需使用选项更新它 在 git 命令中 命令选项和远程名称之间分开 但它不起作用 git pull myremotename master 而且 我收到此错误
  • 将 pandas 系列时间戳转换为唯一日期列表

    我在 pandas 数据框中有一列时间戳格式的列 想要将唯一日期 没有时间 提取到列表中 我尝试了以下方法并没有真正起作用 1 dates datetime datetime df EventTime tolist date 2 dates
  • 从 Google 应用脚本访问 Google 文档评论

    我正在与几个人同时编写谷歌文档 为了跟踪谁必须做什么 我正在使用评论 然后 文档的每个部分都会分配给某人 并且他必须在评论中更新其部分的状态 以结构化格式 感谢 VBA 中的宏 我将其提取出来并将结果放入电子表格中 这样就可以轻松跟踪文档的
  • 具有一个或多个(多个)参数的搜索表单

    我已经掌握了基础知识 在其中创建了两个文件 用户输入搜索参数的搜索表单 以及生成输入项目的结果文件 为了简单起见 我们将搜索表单文件指定为 search php 将结果页面指定为 results php 搜索 php
  • Java8 Collections.sort(有时)不会对 JPA 返回的列表进行排序

    Java8 在我的 JPA EclipseLink 2 5 2 环境中不断执行奇怪的操作 我不得不删除这个问题https stackoverflow com questions 26806183 java 8 sorting behavio
  • 在聚焦的输入上按空格键并输入“单击”。如何禁用此行为?

    在 Chrome 和 Firefox 也许还有其他 中 如果您有一个输入焦点 按 空格 和 Enter 即可为您单击它们 我正在制作一个 HTML 5 游戏 我想重写空格和输入在焦点上的反应方式 但默认行为妨碍了我 有没有办法在大多数浏览器
  • 使用 CNN 进行二值图像分类 - 选择“负”数据集的最佳实践? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 假设我想训练一个 CNN 来检测图像是否是汽车 选择 Not Car 数据集的最佳实践或方法有哪些 因为这个数据集可能是无限的 基本上是除汽车以外的任何东西 是否有关于数据集需要
  • 通过 Spring MVC 框架包含其他 JSP 是一个好主意吗?

    这是一个模糊而宏大的问题 但希望我能用尽可能少的具体例子来解释它 我们最近改用 Spring MVC 作为我们的应用程序框架 但在开发过程中发现了一个 实际上只有一个 限制因素 如何使用适当的模型包含动态视图 例如 我们正在创建一个包含可重