有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在Liferay中将值从输入发送到AutoLogin类

我正在按照this示例开发一个LinkedIn登录钩子,但是我在从我的。将jsp文件发送到。实现AutoLogin的java类

如果我编写一个portlet,那么这些值将正确地发送到processAction方法,但是这里相同的方法不起作用

在我的linkedin.jsp文件中,我有以下(简化的)结构

<%
PortletURL linkedInRegiserURL = renderResponse.createActionURL();
linkedInRegiserURL.setParameter(ActionRequest.ACTION_NAME, "linkedInRegister");
%>

<form id="linkedInForm" action="<%= linkedInRegiserURL.toString() %>" method="post"
        name='<portlet:namespace/>linkedInForm'>
    <input type="hidden" name='<portlet:namespace/>email' id="email" />
</form>

然后在javascript方法中,基于LinkedIn API,填充输入,然后提交表单

document.getElementById('email').value = member.emailAddress;
document.getElementById('linkedInForm').submit();

这里一切都很好。问题从我的LoginHook implements AutoLogin类中的login()函数内部开始。如果我进行打印测试,将显示以下结果:

@Override
public String[] login(HttpServletRequest request,
        HttpServletResponse response) throws AutoLoginException {

    String email1 = ParamUtil.getString(request, "email");
    String email2 = request.getParameter("email");
    String email3 = request.getAttribute("email").toString();

    System.out.println("email1 : " + email1); //empty value
    System.out.println("email2 : " + email2); //null
    System.out.println("email3 : " + email3); //null

    //etc.
}

我猜问题从这里开始<form id="linkedInForm" action="<%= linkedInRegiserURL.toString() %>",但我不确定,我不知道应该如何传递电子邮件参数

PS:我正在使用Liferay 5.2.3,因此编写一个扩展BaseStrutsPortletAction的类是不可能的


共 (1) 个答案

  1. # 1 楼答案

    Liferay中登录挂钩内的参数有点棘手,您可以尝试两种方法:

    使用以下函数检索可能包含您的参数的“真实”请求(尽管我不确定它是否在liferay 5.2.3、liferay 6及其作品中可用):

    PortalUtil。getOriginalServletRequest((javax.servlet.http.HttpServletRequest)

    试着打一个GET电话,而不是发帖

    另一种方法是将电子邮件保存为cookie(javascript),然后在autologin钩子中恢复

    希望能对你有所帮助