如何仅在onclick/oncomplete/on时调用JSF支持bean方法。。。事件发生且不在页面加载上

如何仅在onclick/oncomplete/on时调用JSF支持bean方法。。。事件发生且不在页面加载上,jsf,jsf-2,onclick,Jsf,Jsf 2,Onclick,我有两个图像按钮: <div class="sidebarOptions"> <input type="image" src="images/homeButton.jpg" onclick="#{home.setRendered(1)}"/> </div> <div class="sidebarOptions"> <input type="image" src="images/memberButton.jpg" onclick

我有两个图像按钮:

<div class="sidebarOptions">
    <input type="image" src="images/homeButton.jpg" onclick="#{home.setRendered(1)}"/>
</div>
<div class="sidebarOptions">
    <input type="image" src="images/memberButton.jpg" onclick="#{home.setRendered(2)}"/>
</div>

但是,当页面加载值为1和2时,会立即调用这两个方法。当我单击它时,两个方法都被调用


如何在实际单击图像按钮时实现只调用bean方法的所需功能?

这种方法不起作用。您似乎混淆了“服务器端”和“客户端”的基本web开发概念,并且误解了JSF和EL的作用

JSF是一种服务器端语言,它在Web服务器上根据HTTP请求运行,并生成HTML/CSS/JS代码,该代码随HTTP响应返回。在生成HTML输出期间,将在服务器端执行
${}
#{}
形式的所有EL表达式。JavaScript是一种在webbrowser上运行并在HTMLDOM树上工作的客户端语言。HTML onclick属性应该指定一个JavaScript函数,该函数将在特定HTML DOM事件的客户端执行

为了调用JSF托管bean方法,您需要
操作
*侦听器
属性。JSF提供组件来生成所需的HTML并指定所需的ajax操作,这些操作将改变服务器端的状态。可以使用
生成
。bean方法可以由该组件的
action
属性调用。该组件可以通过嵌入
标记进行ajaxified

因此,以下内容可以帮助您:


家
成员
另见:

我也遇到了同样的问题,但在我的例子中,我想通过传递我的dataTable行索引来设置一个变量,所以下面是代码:
但我得到的是:无法解析expression@AmiraGL:这个问题是无关的。卸下内部的
{
}
。这是无效的。假设“误解了JSF和EL的作用”,这是一个小小的结论。我正在研究这个解决方案,因为我知道onclick不会在整个jsf生命周期中调用这个函数,而且我可以在没有验证的情况下简单地进行ajax调用。我可以直接使用javascript调用一个无序的ajax调用。。。然而,在字里行间阅读似乎是我可以和一个听众一起做的。