2013-02-05 127 views
0

我想在包含页面中使用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的行动)

<%@ 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>种元素),并把标签库元素融入DisplayTag表格不同并没有出现......当我删除了<html><body>元素和离开标签库之一,那么我可以看到在网页上的文本main.jsp中:"<%@ taglib prefix="display" uri="http://displaytag.sf.net" %>"

目前我有一个工作解决方案(通过在页面中使用<html>,<body> a <%@ taglib>必须包含),但我认为我的设计模式很糟糕。我应该如何解决这个问题? 谢谢, Viktor

回答

1

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

对于使用<s:include>标签重命名您的网页.jsp和只放taglib指令(W/O <html><body>)与表一起包含的页面。

+0

感谢Aleksandr的快速响应!我需要动态包含,因为我知道<%@ include是用于静态包含的。我对吗?或者我知道不正确?谢谢,V。 – Viktor

+0

所以,只需将您的页面重命名为'.jsp'并使用''标签即可。 –

+0

感谢Aleksandr,它的工作原理!你是对的,我只需要重命名为.jsp。 V. – Viktor

1

您应该使用

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

其中mySnippet.jsp是部分JSP,没有DTD,没有头,没有身体,只有你所需要的HTML片段。

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

+0

谢谢安德烈亚斯,我不得不将.jspf重命名为.jsp,它的工作原理!谢谢你,V。 – Viktor

相关问题