我的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'我得到了预期的输出。
是否有任何标记或机制可以删除回发通话?
答案 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">