我正在按照这个示例开发一个 LinkedIn 登录挂钩,但我被困在将参数从我的 .jsp 文件传递到实现 .java 的类AutoLogin
中。
如果我编写一个 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
班级的函数内部。如果我进行打印测试,则会显示以下结果:
@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
是不可能的。