在JSF2.0中禁用Button回发

时间:2012-07-07 19:43:38

标签: jsf-2

我的JSF页面如下

   <h:head>
        <title>Ajax Test</title>
    <h:outputScript name="giveEffect.js" library="jquery"/>
    <h:outputScript name="jquery.js" library="jquery"/>
</h:head>
<h:body>
    <div id="div1">
        <h:button id="b1" onclick=" button1Click(this)" value="#{kp.firstname}"/>
    <h:button id="b2" onclick="button1Click(this)" value="#{kp.home}"/>
    </div>
</h:body>
</html>

button1Click是一个jquery函数,它执行ajax调用并更新我的页面。但无法看到ajax更新。由于回发/ jsf生命周期调用,我的变化正在迷失。

用萤火虫检查Dom。我找到了以下代码。

<div id="div1">
<input id="b1" type="button" value="Kar" onclick="button1Click(this); window.location.href='/AJAXTest/faces/index.xhtml'; return false;">
<input id="b2" type="button" value="Alike" onclick="button1Click(this); window.location.href='/AJAXTest/faces/index.xhtml'; return false;">
 </div>

假设我使用firebug消除了window.location.href ='/ AJAXTest / faces / index.xhtml'我得到了预期的输出。

是否有任何标记或机制可以删除回发通话?

1 个答案:

答案 0 :(得分:0)

按钮组件的结果属性用于确定由onclick激活的目标URL。整个目标URL字符串将写为按钮的onclick属性“window.location.href =''”。如果您有自定义onclick方法,则window.location.href将附加在脚本的末尾。由于您没有提到结果,因此会向您当前的视图发出GET请求。

您可以改用 <h:commandButton>并提及type =“button”,如下所示:

<h:commandButton id="b1" onclick=" button1Click(this)" value="#{kp.firstname} "type="button">

Documentation