为什么通知栏不起作用?

时间:2011-04-22 09:17:39

标签: java javascript jsf jsf-2 primefaces

我将primefaces notification Bar用于我的应用。我想让它出现在用户登录并被重定向到名为main.xhml的页面时 我试图这样做,但我不知道为什么我不能让它出现。

这是一个位于托管bean中的方法,当在名为login.xhtml的页面上单击登录按钮时,该托管bean执行重定向:

@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 个答案:

答案 0 :(得分:2)

</p:notificationBar>之后获取脚本,因为如果你在通知栏之前写它,它将无法在加载时找到它。

要使其消失,只需使用setTimeOut()

致电topBar.hide()即可