Liferay 有一个登录链接,单击该链接可以弹出登录表单/portlet。我想在我的 portlet 中模拟该链接。我试过configuring the login portlet to pop up in a modal dialog ,但它的行为方式与默认登录弹出窗口不同。具体来说,当我登录时,弹出窗口并没有消失(而是弹出窗口本身被重定向到不同的 View )。如何弹出默认登录表单,使其在用户登录时消失。
最佳答案
为了创建与默认登录链接具有完全相同行为的链接,您需要使用Liferay.SignInModal
插件。
首先,您需要创建一个指向 /c/portal/login
并包含布局 id 的 h:ouputLink
。* 如果 JavaScript 由于某种原因失败,此链接将通过 GET 将用户发送到登录页面并在用户登录后将其重定向回当前页面,从而提供良好的回退行为。
<h:outputLink id="logInLink" binding="#{logInLink}"
value="/c/portal/login?p_l_id=#{bean.getPlid(request)}">
<h:outputText value="Log In/Register" />
</h:outputLink>
接下来您需要将登录模式插入该链接:
<h:outputScript>
AUI().use('liferay-sign-in-modal', 'event-outside', 'transition', function(A) {
A.one('##{logInLink.clientId}'.replace(/:/g,'\\:'))
.plug(Liferay.SignInModal);
});
</h:outputScript>
现在您的登录/登录链接的行为将与默认版本完全相同。用户登录后,弹出窗口应关闭。
* 要获取当前布局 id,请使用如下方法:
public long getPlid(PortletRequest portletRequest) {
ThemeDisplay themeDisplay =
(ThemeDisplay) portletRequest.getAttribute(WebKeys.THEME_DISPLAY);
Layout layout = themeDisplay.getLayout();
return layout.getPlid();
}
关于jsf - 如何在 Liferay JSF portlet 中创建一个弹出默认登录表单/portlet 的链接/按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50587750/