帶鉤子的 Hello 使用者名稱
此示例將說明如何在登入後建立一個簡單的“Hello User [name]”。該示例基於使用鉤子執行自定義操作
從命令列終端,導航到 Plugins SDK 的 hooks 資料夾。要建立鉤子專案,必須執行 create 指令碼。以下是執行指令碼時要遵循的格式:
create。[sh | bat] [project-name]“[Hook Display Name]”
在 Linux 和 Mac OS X 上,你輸入的命令與此示例中的命令類似:
./create.sh Hello-user
Hello User
在 Windows 上,你輸入的命令與此示例中的命令類似:
create.bat Hello-user
My 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
之類的訊息。