0

我想在包含的页面中使用 displaytag,但我遇到了困难。我有一个主页,其中包括标题 jspf、菜单 jspf 和其他 jspf,具体取决于所选菜单(在 menu.jspf 上)

主文件

<html><body>
<table border="0">
  <tr>
     <td colspan="2"><s:include value="header.jspf"/></td>
  </tr>
  <tr>
     <td><s:include value="menu.jspf"/></td>
     <td><s:include value="%{page}"/></td>
  </tr>
</table>
</body></html>

“其他”jspf(我在 Struts2 操作中更改了“页面”变量的值)

<%@ taglib prefix="display" uri="http://displaytag.sf.net" %>
<%@ taglib prefix="s" uri="/struts-tags" %> 
<html>
<link rel="stylesheet" href="./css/screen.css" type="text/css"/>
<link rel="stylesheet" href="./css/displaytag.css" type="text/css"/>
<body>

   <display:table name="${usageList}" pagesize="2" requestURI="menu_admin_freq.action" sort="list" class="mars">
      <display:column property="nameBackendService" title="BackendService" sortable="true"/>
      <display:column property="frequency" title="Frequency" sortable="true"/>
   </display:table>

</body></html>

如您所见,我包含了一个完整的 JSP 页面,我认为这不是一个好主意……但是,当我尝试仅包含一个片段(没有<html>and<body>元素)并将 taglib 元素放入 main.jsp 时,displaytag 表确实没有出现...当我删除<html>and<body>元素并离开 taglib 时,我可以在网页上看到一条文本:"<%@ taglib prefix="display" uri="http://displaytag.sf.net" %>"

目前我有一个可行的解决方案(通过使用<html>,页面中必须包含<body>的元素),但我认为我的设计模式非常糟糕。<%@ taglib>我该如何解决这个问题?谢谢,维克多

4

2 回答 2

1

Struts2<s:include>标记包括一个servlet 或一个JSP 页面的结果。如果要包含 JSP 片段,请使用 JSP 包含指令<%@ include file="..." %>

对于使用<s:include>标签将您的页面重命名为.jsp并仅将 taglib 指令 (w/o <html>, <body>) 与您的表格一起放入包含的页面。

于 2013-02-05T12:26:09.773 回答
1

你应该使用

<jsp:include page="mySnippet.jsp"/>

哪里mySnippet.jsp是一个部分 Jsp,没有 DTD,没有头部,没有正文,只有你需要的 HTML 片段。

需要时,在其中声明标签库(struts-tags等)......

于 2013-02-05T12:55:35.980 回答