JSF:JS重定向不适用于h:commandButton onclick事件

时间:2011-08-31 12:18:53

标签: jsf button redirect ajax4jsf

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

2 个答案:

答案 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;"/>