我有一个jsp,当用户打开任何Jsp时,它需要动态地包含在整个项目中。即,当用户打开一个jsp时,我的jsp应该自动包含进来。
这是我在Tomcat中用web.xml写的
<jsp-property-group>
<url-pattern>/webapps/ROOT/html/*.jsp</url-pattern>
<url-pattern>*.jspf</url-pattern>
<el-ignored>false</el-ignored>
<scripting-invalid>false</scripting-invalid>
<is-xml>false</is-xml>
<include-prelude>/WEB-INF/jsp/tracker.jsp</include-prelude>
<!-- <include-coda>/template/coda.jspf</include-coda> -->
</jsp-property-group>
我把我的jsp放在tomcat的WEB-INF/jsp/下,我想把它包含到每个项目中,因为它包含一个跟踪用户日志的代码。
或任何其他方式来实现这一点。
谢谢。
发布于 2013-02-06 20:06:00
有两种方法可以解决这个问题。
简单的方法是在主题中包含您的JSP。当您的主题应用于您的项目时,当呈现主题时,项目中的任何页面都将呈现此包含的JSP。
下面是代码示例。这必须放在vm文件(navigation.vm)中。
$theme.include($themeServletContext, "/jsp/yourJSPPageToBeIncluded.jsp")
在这里,JSP文件夹直接放在主题war中。
另一种方法(单调乏味)是在您希望包含此JSP的每个JSP页面中包含此JSP。
为此,请使用<jsp:include>
元素。
一些参考文献,
Ref1 Ref2
发布于 2013-02-07 16:08:34
还有一种方法可以包含整个门户的JSP,也就是dockbar。
您可以创建一个钩子,并使用<jsp:include />
、<liferay-util:include />
或简单的<%@ include file="" />
(这将是静态的)将您的jsp包含在/html/portlet/dockbar/view.jsp
中。
<jsp:include page="/jsp/yourJSPPageToBeIncluded.jsp" />
或
<liferay-util:include page="/jsp/yourJSPPageToBeIncluded.jsp" />
或
<%@ include file="/jsp/yourJSPPageToBeIncluded.jsp" />
注意:路径可能因JSP的放置位置不同而有所不同。
我之所以选择dockbar,是因为它出现在liferay的所有门户页面上。如果您正在打开一个弹出窗口,如配置弹出窗口、外观弹出窗口或其他自定义对话框弹出窗口,这将不起作用,因为dockbar不在弹出窗口中。要在弹出窗口中使用,您必须覆盖自定义主题中的portal_pop_up.vm
,并按照@VikasV的建议编写代码
$theme.include($themeServletContext, "/jsp/yourJSPPageToBeIncluded.jsp")
https://stackoverflow.com/questions/14728100
复制相似问题