我有一个使用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>
答案 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