JSP钩子是一个特殊的liferay插件,它允许修改核心portlet jsp-s,可以说您要修改登录portlet以显示Welcome in my custom login!。
Hook插件的最小结构如下:
[project-name]-hook/ └── docroot/ ├── WEB-INF/ │ ├── src/ │ ├── lib/ │ ├── liferay-hook.xml │ ├── liferay-plugin-package.properties │ └── web.xml └── META-INF/ ├── custom_jsps/ └── MANIFEST.MF
liferay-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随名称<orginal name>.portal.jsp一起保存,以防钩子取消部署时恢复。
如果我们想保留使代码适应于基本Liferay平台版本的更新或升级的代码,我们甚至可以在新的经过修改的JSP中调用原始JSP。为此,请在自定义JSP中使用以下模式:
<liferay-util:buffer var="contentHtml"> <liferay-util:include page="/html/{ JSP file’s path }" /> </liferay-util:buffer>
{ JSP file’s path }在这种情况下会在哪里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 %>