onclick 中的 Bean 方法在渲染时触发

Bean method in onclick is fired on rendering

仅当发生点击事件时,以下内容按预期工作:

<a onclick="alert('test')"/> 

但这已经在页面呈现时调用了:

<a onclick="#{bean.someMethod()}" />

为什么渲染时调用了bean方法?

onclick 需要一个 javascript 函数,而不是方法表达式。 #{bean.someMethod()} 必须在呈现页面时解析为某个字符串(在您的示例中为 alert('test') ),这就是调用它的原因。 <a onClick="#{bean.someMethod()}" /> 仅当 someMethod() returns 字符串有效 javascript 代码时才有意义。

这不要与 JSF action 属性混淆,例如 <h:commandButton action="#{bean.someMethod()}",它在单击按钮时调用。