在 Spring 中创建可重用的 GUI 组件

Create reusable GUI components in Spring

我有一个使用 Spring MVC 的项目,我最近在我的页面上添加了 Apache Tiles 的使用。但是我一个 model Book 我必须在很多不同的页面上显示。我可以在 Spring 中以某种方式定义一本书 GUI Component 吗?我想要这样的东西:

A GUI Component 我可以这样定义: book.viewcomponent

<h1>${book.title}</h1>
<span>${book.summary}</span>

通过传递 model 对象使用此组件的第一页 booklist.jsp

<!--some import to let me insert with prefix:"insert"-->
<html>
<head>...</head>
<body>
<insert page="book.jsp" model="${book}">
</body>
</html>

第二个页面通过传递 model 对象使用此组件 morebooks.jsp

<!--some import to let me insert with prefix:"insert"-->
<html>
<head>...</head>
<body>
<insert page="book.jsp" model="${book}">
</body>
</html>

我认为您可以使用包含或标签来做到这一点。包括:

<!-- There's a book in the request -->
<jsp:include page="book.jsp" />

在这种情况下,如果您的 book.jsp 文件中有类似 ${book.title} 的内容,那么在包含您的片段之前,请求中必须有一个名为 "book" 的 Book 对象。

加上标签,正式一点。您需要在文件中写入您的标签及其参数定义。以下将是您的 book.tagx 标签,例如 WEB-INF/tags/mytags:

<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0">
  <jsp:directive.attribute name="book" type="your.package.Book" required="true" />
  <h1>${book.title}</h1>
  <span>${book.summary}</span>
</jsp:root>

然后您可以导入此标记,添加指向您保存它的位置的命名空间:

xmlns:mytags="urn:jsptagdir:/WEB-INF/tags/mytags"

最后使用它:

<mytags:book book="${book}" />

如您所见,这里参数是传递给标签的,而不是在请求中隐式传递。

有关创建标签的更多信息:https://docs.oracle.com/cd/E19316-01/819-3669/6n5sg7b5m/index.html