liferay JSP钩子

示例

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 %>