JSF页面onload执行按钮单击

时间:2014-09-06 20:27:03

标签: jsf onclick onload

我有一个以下的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只是重定向页面。

1 个答案:

答案 0 :(得分:1)

您将javascript属性与服务器端属性混淆。例如。 onclick是单击组件时执行的javascript。

您遇到的情况是onclick="#{adminManagedBean.logoutUser()}"在服务器端评估adminManagedBean.logoutUser()进行注销。

如果您使用以下内容,将会修复:

<h:commandButton value="Logout" action="#{adminManagedBean.logoutUser()}"/>

你也滥用onload h:body