0

私のプロジェクトでは、誰かがアクセスしたときに、最初にログインダイアログボックスをポップアップする必要があることを実装したいと思います(メインページメニューと他の要素を非表示にします。ログインボックスを表示するだけです)。次に、正しい情報を入力した場合は、非表示にします。ログインボックスと表示レイアウトをuに。
ここで質問は次のとおりです。ボックスを非表示にすると、レイアウトが表示されて見栄えが良くなりますが、メニューのリンクをクリックすると、中央のすべてのレイアウトが表示されなくなります。しかし、ブラウザをもう一度更新すると、もう一度見ることができます

私は間違ったIDまたは何か他のものを更新するかどうかを確信しています。以下は、例外を参照してキャッチするコードです。答えを待ってください。私にとって非常に重要です。よろしくお願いいたします。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">

<f:view contentType="text/html">
    <h:head>
        <f:facet name="first">
            <meta http-equiv="X-UA-Compatible" content="EmulateIE8" />
            <meta content='text/html; charset=UTF-8' http-equiv="Content-Type" />
            <title>SingTel - eshop Operation Maintaince</title>
            <link rel="shortcut icon"
                href="#{request.contextPath}/images/system/favicon.ico" />

        </f:facet>

        <link type="text/css" rel="stylesheet"
            href="#{request.contextPath}/css/default.css" />
        <link type="text/css" rel="stylesheet"
            href="#{request.contextPath}/css/syntaxhighlighter/syntaxhighlighter.css" />

        <style type="text/css">
        </style>
        <script type="text/javascript">
            function handleLoginRequest(xhr, status, args) {
                if(args.validationFailed || !args.loggedIn) {
                    jQuery('#dialog').effect("shake", { times:5 }, 100);
                } else {
                    dlg.hide();
                    jQuery('#loginLink').fadeOut();
                }
            }           
        </script>
    </h:head>

    <h:body>    
        <p:outputPanel id="mainPanel" autoUpdate="true">
            <p:layout fullPage="true" id="layout" rendered="#{esUserSessionBean.showLogin == true ? false : true}">
                <p:layoutUnit id="left" position="west" closable="false"
                    collapsible="true" style="border:0px" header="MENU">
                    <h:form id="menuForm">
                        <p:slideMenu
                            style="width:272px;height:600px;margin-left:-3px;margin-top:-6px;"
                            id="tree">
                            <p:submenu label="Test EJB " icon="ui-icon-play">
                                <p:menuitem value="Test EJB " action="#{navigationBean.doNav}"
                                    update=":centerContentPanel" icon="ui-icon-arrow-4-diag">
                                    <f:param name="urlParam" value="ui/testEJB/testEJB" />
                                </p:menuitem>
                            </p:submenu>
                        </p:slideMenu>
                    </h:form>
                </p:layoutUnit>
                <p:layoutUnit id="center" position="center" style="border:0px;">
                    <p:outputPanel id="centerContentPanel">
                        <ui:include src="../#{navigationBean.pageName}.xhtml" />
                    </p:outputPanel>
                </p:layoutUnit>
            </p:layout>
        </p:outputPanel>

        <p:outputPanel id="loginPanel" autoUpdate="true">
            <p:dialog id="dialog" header="Login" widgetVar="dlg" closable="false"
                visible="#{esUserSessionBean.showLogin}"
                modal="true"
                >
                <h:form id="loginForm">
                    <h:panelGrid columns="2" cellpadding="5">
                        <h:outputLabel for="username" value="Username:" />
                        <p:inputText id="username" value="#{esUserSessionBean.userId}"
                            required="true" label="username" />
                        <h:outputLabel for="password" value="Password:" />
                        <p:password id="password" value="#{esUserSessionBean.password}"
                            required="true" label="password" feedback="false" />

                        <f:facet name="footer">
                            <p:commandButton id="loginButton" value="Login" 
                                actionListener="#{esUserSessionBean.login}"
                                oncomplete="handleLoginRequest(xhr, status, args) " />

                        </f:facet>
                    </h:panelGrid>

                </h:form>
            </p:dialog>
        </p:outputPanel>



    </h:body>

</f:view>
</html>
4

1 に答える 1

0

内に #loginLink をラップする必要があります<h:panelGroup rendered=#{not bean.isLogged}"></h:panelGroup>。bean.isLogged は、ユーザーが接続されている場合に true を返す、選択したセッターになります。

これで、ページを更新してもリンクが表示されなくなります。コード スニペット内に #loginLink が見つかりません。

于 2012-11-30T07:56:40.313 に答える