<h:commandButton onclick="window.open('/page.html')" value="test" action="#{bean.myAction}"></h:commandButton>
当我在上面点击后,浏览器出现刷新页面并滚动到顶部。
如果我使用"return false;"操作永远不会运行。
我怎样才能阻止这种情况的发生?
不确定为什么要使用"window.open('/page.html')"
,但如果您想在操作命令完成后打开页面,则执行以下操作
<h:commandButton value="test" action="#{bean.myAction}">
<f:ajax onevent="function(data){ if(data.status === 'success') window.open('/page.html')}"/>
</h:commandButton>
<h:commandButton onclick="window.open('/page.html')" value="test" action="#{bean.myAction}">
<f:ajax execute="@this" render="@none" />
</h:commandButton>
不需要PrimeFaces也可以;)
它确实刷新了页面,为什么不呢?h:commandButton
作为一个简单的表单提交。您需要ajax调用来不重新加载整个页面。
你可以看看,例如,primefaces组件库,它已经准备好使用完全支持ajax调用的组件-参见<p:commandButton>
。
对于return false
,如果您在onclick
中使用它,它将不会运行动作,因为它会阻止表单提交,因此,简化为"不经过bean"。