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

时间:2016-02-06 18:49:15

标签: java spring jsp spring-mvc tiles

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

我可以定义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>

1 个答案:

答案 0 :(得分:2)

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

<!-- 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