liferay JSP钩子
示例
JSP钩子是一个特殊的liferay插件,它允许修改核心portletjsp-s,可以说您要修改登录portlet以显示Welcomeinmycustomlogin!。
Hook插件的最小结构如下:
[project-name]-hook/
└── docroot/
├── WEB-INF/
│ ├── src/
│ ├── lib/
│ ├── liferay-hook.xml
│ ├── liferay-plugin-package.properties
│ └── web.xml
└── META-INF/
├── custom_jsps/
└── MANIFEST.MFliferay-hook.xml是区分您正在使用的挂钩类型的文件,在这里您可以在hook标记内定义该挂钩的正确参数(对于JSP挂钩):
<?xml version="1.0"?>
<!DOCTYPE hook PUBLIC "-//Liferay//DTD Hook 6.2.0//EN" "http://www.liferay.com/dtd/liferay-hook_6_2_0.dtd">
<hook>
<custom-jsp-dir>/custom_jsps</custom-jsp-dir>
</hook>login.jsp要在Liferay的中找到/docroot/html/portlet/login/login.jsp,要对其进行挂钩,我们需要在custom_jsps文件夹中添加具有相同名称和路径的jsp。
部署钩子后,Liferay将在中liferay-hook.xml寻找custom-jsp-dir值,并将所有门户JSP替换为该目录中的JSP。最初的jsp随名称<orginalname>.portal.jsp一起保存,以防钩子取消部署时恢复。
如果我们想保留使代码适应于基本Liferay平台版本的更新或升级的代码,我们甚至可以在新的经过修改的JSP中调用原始JSP。为此,请在自定义JSP中使用以下模式:
<liferay-util:buffer var="contentHtml">
<liferay-util:include page="/html/{ JSP file’s path }" />
</liferay-util:buffer>{JSPfile’spath}在这种情况下会在哪里portlet/login/login.portal.jsp。这样做称为扩展原始jsp。
然后,我们可以使用以下方法添加内容:
<%
contentHtml = StringUtil.add("Stuff I'm adding BEFORE the original content", contentHtml,"\n");
contentHtml = StringUtil.add(contentHtml,"Stuff I'm adding AFTER the original content","\n");
%>
<%= contentHtml %>