java - 如何将输入中的值发送到 Liferay 中的 AutoLogin 类

标签 java javascript jsp autologin

我正在开发一个 LinkedIn 登录钩子(Hook),如下 this例如,但我在将参数从 .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();

这里一切都很好。问题始于login()内部。在我的LoginHook implements AutoLogin中起作用类(class)。如果我进行打印测试,则会显示以下结果:

@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 的类这是不可能的。

最佳答案

Liferay 中的 Params Inside 登录 Hook 有点棘手,您可以尝试 2 件事:

使用以下函数检索可能包含您的参数的“真实”请求(尽管我不确定它是否在 liferay 5.2.3 中可用,但在 Liferay 6 中有效):

PortalUtil.getOriginalServletRequest((javax.servlet.http.HttpServletRequest 请求)

尝试使用 GET 调用,而不是 POST。

另一种方法是将电子邮件保存为 cookie(在 javascript 中),然后在自动登录 Hook 中恢复它。

希望对大家有帮助...

关于java - 如何将输入中的值发送到 Liferay 中的 AutoLogin 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17651238/

相关文章:

intellij idea IDE 中的 Javaee

java - 在呈现 JSP 之前,用户必须先通过 action

jsp - 如果 scratchdir 是只读的,Tomcat 是否会在内存中缓存已编译的 JSP 页面?

java - 如何在 Spring Boot 的每个请求中获取当前用户?

java - 如何使用 CountDownTimer 构造函数调用 Alarm Intent ?

javascript - 使用 JavaScript JQUERY 或 CSS 制作可扩展的顶部栏

javascript - 如何使用 OAuth 2.0 实现 Web 小部件

java - 尝试使用 JSF 创建项目时出现错误 "Failed to execute goal"

java - 是否有任何事件可以知道 View 是否移动到其他 View 下方?

javascript - 为什么 Chrome 中的悬停菜单是 'ghosting'?