0

Liferayフォームを介してパスワードを投稿し、 「パスワード」と呼ばれるセッションに保存しています。現在「1234」のデフォルトとして作成した正しいパスワードを入力すると、セッションがアクティブになり、ページを閲覧すると正常に動作しています。

しかし、初めて投稿するときは機能しません。データを表示したり、別のページに移動したりするには、ボタンを 2 回クリックする必要があります。

ここにいる誰かがこれで私をサポートしてくれますか?これは私の完全なコードです:

<%
String value = BeanParamUtil.getString(article, request, "structureId");
%>

<portlet:actionURL secure="<%= PropsValues.COMPANY_SECURITY_AUTH_REQUIRES_HTTPS || request.isSecure() %>" var="SecondloginURL">
    <portlet:param name="saveLastPath" value="0" />
    <portlet:param name="struts_action" value="/journal_content/view" />
</portlet:actionURL>

<c:choose>
    <c:when test="<%= value.equals(\"10801\") %>">
        <%
            HttpSession session1 = request.getSession(false);
            out.print(session1 + "<br>");
            String sessionId = session1.getId();
            out.print(sessionId + "<br>");
            String foo = (String) session1.getAttribute("password");
            out.print(foo + "<br>");
        %>
        <c:choose>
            <c:when test="<%= !Validator.isNull(foo) %>">
                <h2>this is the second password and it's working</h2>
                <div class="journal-content-article"
                     id="article_<%= articleDisplay.getCompanyId() %>_<%= articleDisplay.getGroupId() %>_<%= articleDisplay.getArticleId() %>_<%= articleDisplay.getVersion() %>">
                    <%= RuntimePortletUtil.processXML(application, request, response, renderRequest, renderResponse, articleDisplay.getContent()) %>
                </div>
            </c:when>
            <c:otherwise>                    
                <aui:form action="<%= SecondloginURL %>" name="auth" method="POST">
                    <aui:input label="Second Password" type="password" name="password" />
                    <aui:button type="submit" value="authenticate" onClick="location.reload(true)" />
                </aui:form>

                <% 
                String pass = request.getParameter("password"); 
                out.println(pass+" = 1234"); 
                %>

                <c:if test="<%= Validator.equals(pass, \"1234\") %>">

                    <%  
                    session1.setAttribute("password","authenticated");
                    %>

                </c:if>
            </c:otherwise>
        </c:choose>
    </c:when>
    <c:otherwise>
        <div class="journal-content-article"
             id="article_<%= articleDisplay.getCompanyId() %>_<%= articleDisplay.getGroupId() %>_<%= articleDisplay.getArticleId() %>_<%= articleDisplay.getVersion() %>">
            <%= RuntimePortletUtil.processXML(application, request, response, renderRequest, renderResponse, articleDisplay.getContent()) %>
        </div>
    </c:otherwise>
</c:choose>

私はジャーナル_コンテンツ/ビューでフックをやっています

4

1 に答える 1

0

location.reload()何が起こっているかは、(を使用して)セッションが設定されていないときに初めてページが更新されたときです<otherwise>

したがって、2 回目にクリックしてリロードすると、セッションはすでに設定されています。ボタンをクリックせずに 2 回目にページを更新しただけでも、セッションが設定されていることがわかります。

したがって、私が考えることができる 1 つの方法は、struts-actionフック (を使用している場合) を使用して、それぞれの View-action クラスLiferay 6.1のコードの設定を移動することです。session

またはそうでなければ

session文字列を確認する前に、コードの設定を移動しようとすることができfooます。

于 2012-09-14T09:25:35.553 に答える