包含页面中的Displaytag

时间:2013-02-05 12:06:26

标签: jsp struts2 displaytag jspinclude

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

main.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动作中更改'page'变量的值)

<%@ 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><body>元素)时将taglib元素放入main.jsp中,displaytag表格没有出现...当我删除<html><body>元素并将taglib保留为1时,我可以在网页上看到一个文本:{ {1}}

目前我已经找到了一个有效的解决方案(在页面中使用"<%@ taglib prefix="display" uri="http://displaytag.sf.net" %>"<html><body>元素,但我认为我的设计非常糟糕图案。我应该如何解决这个问题? 谢谢, 尤

2 个答案:

答案 0 :(得分:1)

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

使用<s:include>代码将您的网页重命名为.jsp,并将只有taglib指令(不含<html><body>)和您的表格放入包含的网页。

答案 1 :(得分:1)

你应该使用

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

其中mySnippet.jsp是部分Jsp,没有DTD,没有头,没有正文,只有你需要的HTML片段。

如果需要,在其中声明tag-libraries(struts-tags等)......