帶鉤子的 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 之類的訊息。