我在我的应用程序中使用primefaces通知栏。我希望它在用户登录并被重定向到一个名为main. xml的页面时出现我正在试着去做,但我不知道为什么我不能让它出现。
这是一个位于托管bean中的方法,当在名为login.xhtml:
的页面上单击login按钮时,该方法执行重定向。@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秒?
将脚本放在</p:notificationBar>
之后,因为如果在通知栏之前编写脚本,则在加载时不会找到DOM。
要让它消失只需调用topBar.hide()
setTimeOut()