从a4j:commandLink
迁移到h:commandButton
问题。
这个工作案例:
<a4j:commandLink event="onclick" onclick="if (!confirm('#{resourceBundle.agreement_cancel_message}')) return false;" oncomplete="window.location.href='menu?agreementId='+ agreementId;"/>
h:commandButton
的这种情况不起作用,当前页面只是刷新:
<h:commandButton onclick="if (!confirm('#{resourceBundle.agreement_cancel_message}')) return false;window.location.href='menu?agreementId='+ agreementId;"/>
据我所知,我根本不能oncomplete
使用h:commandButton
。
答案 0 :(得分:3)
您需要始终 return false
才能阻止按钮的默认操作(提交表单)。
<h:commandButton onclick="if(confirm('#{resourceBundle.agreement_cancel_message}'))window.location.href='menu?agreementId='+ agreementId;return false;"/>
(将{}
放在if
正文周围可能会提高可读性
顺便说一下,你似乎永远不会调用bean动作方法。你为什么一直使用<h:commandButton>
?
<button onclick="if(confirm('#{resourceBundle.agreement_cancel_message}'))window.location.href='menu?agreementId='+ agreementId;return false;"/>
答案 1 :(得分:0)
页面已刷新,因为输入的默认事件处理程序正在运行。
尝试阻止输入的提交行为(返回false;最后):
<h:commandButton onclick="if (!confirm('#{resourceBundle.agreement_cancel_message}')) return false;window.location.href='menu?agreementId='+ agreementId; return false;"/>