【问题标题】:Prevent from multiple clicking button in JSF防止在 JSF 中多次单击按钮
【发布时间】:2014-07-12 16:55:09
【问题描述】:

我想防止在 JSF 中多次单击按钮,但每次尝试都不起作用。该按钮中的操作负责将数据加载到表中。 我有类似的东西:

<h:commandButton class="inputButton bFind" action="#{backingBean.load}" value="#{msgc.find}" />

但该行允许用户在操作结束之前点击该按钮。

当我尝试做这样的事情时:

<a4j:commandButton class="inputButton bFind" onclick="this.disabled=true" oncomplete="this.disabled=false" action="#{backingBean.load}" value="#{msgc.find}" />

<a4j:commandButton class="inputButton bFind" onclick="this.disabled=true" oncomplete="this.disabled=false" action="#{backingBean.load}" value="#{msgc.find}" />

然后按钮被阻止并阻止多次单击,但是我必须刷新站点才能查看表中的数据。 :/ 我不知道该怎么做。

【问题讨论】:

  • 查看this(虽然它适用于 PrimeFaces)。
  • 第一种方式(使用h:commandButton)向服务器执行标准提交。另一个((使用a4j:commandButton))执行一个ajax请求,默认情况下不会呈现您的表格,除非您在其reRender属性中指定它。

标签: jsf


【解决方案1】:

好的,我做到了。感谢“@Xtreme Biker”寻求帮助。我需要做的就是添加 reRender 属性:

<a4j:commandButton class="inputButton bFind" onclick="this.disabled=true" oncomplete="this.disabled=false" action="#{backingBean.load}" reRender="dataTable_#{backingBean.id}" value="#{msgc.find}" />

并把应该重新渲染的内容放到

<a4j:outputPanel id="dataTable_#{backingBean.id}" ajaxRendered="true">
</a4j:outputPanel>

【讨论】:

    猜你喜欢
    • 2013-05-18
    • 2020-06-11
    • 1970-01-01
    • 2014-11-13
    • 1970-01-01
    • 1970-01-01
    • 2014-12-11
    • 1970-01-01
    相关资源
    最近更新 更多