почему панель уведомлений не работает? - PullRequest
1 голос
/ 22 апреля 2011

Я использую штрих-код уведомления для моего приложения. Я хочу, чтобы он появлялся только тогда, когда пользователь входит в систему и перенаправляется на страницу с именем main.xhml Я пытаюсь сделать это, но я не знаю, почему я не могу заставить его появиться.

Это метод, расположенный в управляемом компоненте, который выполняет перенаправление при нажатии кнопки входа в систему на странице с именем login.xhtml:

@ManagedBean
@RequestScoped
public class SecurityController {

    @EJB
    private IAuthentificationEJB authentificationEJB;

    public String logIn() {
            if (authentificationEJB.saveUserState(email, password)) {
                // Pass a parameter in ussing the URL.(The notification bar will
                // read this parameter)
                return "main.xhtml?faces-redirect=true&login=1";
            } else {
                return null;
            }
        }

Вот кнопка, которую пользователи нажимают для входа на страницу с именем login.xhtml

<h:commandButton value="Login" action="#{securityController.logIn()}"/>

Вот страница, на которую пользователи попадают при входе в систему (main.xhtml):

<ui:composition template="WEB-INF/templates/BasicTemplate.xhtml">

    <ui:define name="mainForm">

        <h2>The main page</h2>
        <!-- Why this dont work? -->
        <script type="text/javascript">
          jQuery(function() {
          topBar.show()
           });
         </script>
        <!-- It is possible to change font -->
        <p:notificationBar id="notbar" position="top" widgetVar="topBar" styleClass="top" rendered="#{param.login == '1'}">
            <h:outputText value="Welcome, you are now logged in!"
                style="color:#FFCC00;font-size:36px;" />
        </p:notificationBar>

    </ui:define>
   </ui:composition>

В URL-адресе я вижу login = 1, но когда пользователь приходит в main.xhtml, панель уведомлений не появляется.

Как я могу заставить его появиться? Кроме того, вы знаете, как я могу заставить его исчезнуть с эффектом исчезновения через 3 секунды?

1 Ответ

2 голосов
/ 22 апреля 2011

Возьмите скрипт после </p:notificationBar>, так как он не найдет DOM во время загрузки, если вы напишите его перед панелью уведомлений.

и чтобы он исчез, просто вызовите topBar.hide() с setTimeOut ()

...