我有一个以下的JSF页面,我检查用户是否登录了body onload事件。
<h:body onload="#{adminManagedBean.adminIsLoggedIn()}">
<div id="top-bar" class="pure-g">
<div class="pure-u-1-2">
<img src="images/logo.png" border="0" style="margin-left: 20px;"/>
</div>
<div class="pure-u-1-2">
<div class="pure-menu pure-menu-open pure-menu-horizontal">
<ul>
<li><a href="addProduct.xhtml">Add product</a></li>
<li><a href="products.xhtml">Products</a></li>
<li><a href="orders.xhtml">Orders</a></li>
<li><h:button value="Logout" onclick="#{adminManagedBean.logoutUser()}"></h:button></li>
我的问题是为什么用户会在页面加载时自动注销?我对应用程序进行了调试,并且在打开页面时调用了logoutUser方法,即使没有单击该按钮也是如此。未在adminIsLoggedIn()方法中调用logoutUser方法。如果用户未登录,adminIsLoggedIn只是重定向页面。
答案 0 :(得分:1)
您将javascript属性与服务器端属性混淆。例如。 onclick是单击组件时执行的javascript。
您遇到的情况是onclick="#{adminManagedBean.logoutUser()}"
在服务器端评估adminManagedBean.logoutUser()
进行注销。
如果您使用以下内容,将会修复:
<h:commandButton value="Logout" action="#{adminManagedBean.logoutUser()}"/>
你也滥用onload h:body