この例に従って LinkedIn ログイン フックを開発していますが、.jsp ファイルから .java クラスの実装にパラメーターを渡す際に行き詰まりましたAutoLogin
。
ポートレットを作成すると、値は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
は問題外です。