为什么我在Liferay中自定义会话?欢迎使用示例代码,因为它会有所帮助,我对Liferay很新? 更具体地说,我将解释我所做的事情。使用自定义JSP钩子,我已经覆盖了$ PORTAL_ROOT_HOME / html / portlet / login login.jsp并创建了我自己的jsp页面,并且还覆盖了LoginAction类。我的login.jsp页面看起来像:
<aui:form action="" method="post">
<table>
<tr>
<td>Username :</td>
<td><input name="login" size=15 type="text" /></td>
</tr>
<tr>
<td>Password :</td>
<td><input name="password" size=15 type="password" /></td>
</tr>
</table>
<aui:button type="submit" value="sign-in"/>
</aui:form>
现在请点击提交按钮告诉我如何获取LoginAction.java中的登录值,从而将值设置为session。这就是我所说的定制。
答案 0 :(得分:1)
您可以使用以下代码获取登录值:
String login = ParamUtil.getString(request, "login");
String password = ParamUtil.getString(request, "password");
要将某些值设置为会话,请使用此选项:
HttpSession session = request.getSession();
session.setAttribute("parm", "somevalue");
BR, 保罗
答案 1 :(得分:1)
您应该从一开始就复制了原始的login.jsp文件。根据您的codesnipsets的外观,您忘记将操作设置为loginAction。这可以通过以下方式完成:
<portlet:actionURL secure="<%= PropsValues.COMPANY_SECURITY_AUTH_REQUIRES_HTTPS || request.isSecure() %>" var="loginURL">
<portlet:param name="saveLastPath" value="0" />
<portlet:param name="struts_action" value="/login/login" />
<portlet:param name="doActionAfterLogin" value="<%= portletName.equals(PortletKeys.FAST_LOGIN) ? Boolean.TRUE.toString() : Boolean.FALSE.toString() %>" />
</portlet:actionURL>
<aui:form action="<%= loginURL %>" method="post">
<table>
<tr>
<td>Username :</td>
<td><aui:input name="login" size=15 type="text" /></td>
</tr>
<tr>
<td>Password :</td>
<td><aui:input name="password" size=15 type="password" /></td>
</tr>
</table>
<aui:button type="submit" value="sign-in"/>
</aui:form>
请注意,最好将原始的$ PORTAL_ROOT_HOME / html / portlet / login / login.jsp复制到您的钩子中。然后根据需要进行修改。
如果您提供了所提供的剪辑资料,您的Hook将会破坏/删除所有现有功能。
要从动作中接收参数,您可以使用Pauls答案。