带钩子的 Hello 用户名

此示例将说明如何在登录后创建一个简单的“Hello User [name]”。该示例基于使用钩子执行自定义操作

从命令行终端,导航到 Plugins SDK 的 hooks 文件夹。要创建钩子项目,必须执行 create 脚本。以下是执行脚本时要遵循的格式:

create。[sh | bat] [project-name]“[Hook Display Name]”

在 Linux 和 Mac OS X 上,你输入的命令与此示例中的命令类似:

./create.sh Hello-userHello User

在 Windows 上,你输入的命令与此示例中的命令类似:

create.bat Hello-userMy Hook

Liferay IDE 的 New Project 向导和创建脚本在 Plugin SDK 的 hooks 文件夹中生成钩子项目。Plugins SDK 会自动将“-hook”附加到项目名称。

无论你是从 Liferay IDE 还是从命令行创建钩子项目,最终都会得到相同的项目结构(参见前面)。

  • 确定要触发自定义操作的事件。查看 portal.properties 文档以查找匹配的事件属性。提示:事件属性的名称中包含 .event。 portal.properties 文档的以下部分中有会话,启动,关闭和门户事件属性 : 会话 - 启动事件 - 关闭事件 - 门户事件
  • 在钩子项目中,创建一个扩展 com.liferay.portal.kernel.events.Action 类的 Java **类。**重写 Action.run(HttpServletRequest, HttpServletResponse) 方法。
       import com.liferay.portal.kernel.events.Action;
       import javax.servlet.http.HttpServletRequest;
       import javax.servlet.http.HttpServletResponse;
       import com.liferay.portal.model.User;
       import com.liferay.portal.util.PortalUtil;

       public class HelloUser extends Action {
           public void run(HttpServletRequest req, HttpServletResponse res) {
               User user = PortalUtil.getUser(req);
               System.out.println("Hello User "+user.getScreenName());
           }
       }

重要提示:如果你的操作访问 HttpServletRequest 对象,请扩展 com.liferay.portal.kernel.events.Action; 否则,请扩展 com.liferay.portal.struts.SimpleAction。

  • 在钩子项目的 docroot / WEB-INF / src 文件夹中创建一个属性文件 portal.properties 。然后添加与要执行操作的事件对应的门户网站事件属性的名称。将你的操作类’完全限定名称指定为属性的值。

    `login.events.post=HelloUser`
    

    例如,要在门户网站登录用户之前执行类操作,你可以使用操作类作为其值来指定 login.events.pre 属性。它可能看起来像这个属性设置。

要点:由于 login.events.pre 等门户网站属性接受多个值,因此必须将值附加到现有值。你可以从其他挂钩重复修改属性。

仅修改从单个挂钩插件接受单个值的门户网站属性。如果从多个插件修改属性的值,Liferay 将不知道要使用哪个值。

  • 编辑你的文档根目录/ WEB-INF / Liferay 的 -hook.xml 文件,并添加你的
    钩的门户属性文件名作为值
    的范围内 <portal-properties>...</portal-properties> 元素
    挂钩的 <hook>...</hook> 元素。例如,如果 hook 的属性文件名是 portal.properties ,则指定此元素:
<portal-properties>portal.properties</portal-properties>
  • 部署你的钩子,转到你的钩子路径并输入 ant clean deploy 你会在 dist 文件夹中看到 .war。

现在,如果你登录 liferay,你将在服务器日志中看到 Hello user Admin 之类的消息。