【问题标题】:Disable dynamically created button from managed bean从托管 bean 禁用动态创建的按钮
【发布时间】:2015-06-19 13:39:32
【问题描述】:

我对 Primefaces 中动态创建的 CommandButton 有疑问。

我想在用户单击(提交)后禁用按钮。我尝试了两种方式:

  1. 通过将 widgetWar (commandButton.setWidgetVar("pony");) 属性添加到我的 commandButton 并设置 onclick 行为 (commandButton.setOnclick("PF('pony').disable();");)。 WidgetVar 属性在页面上的所有元素中是唯一的。这种方法不起作用 - 单击后我的按钮变为禁用,然后立即返回启用。
  2. 通过在按钮 UiComponent ((CommandButton) component).setDisabled(true); 上调用 setDisabled 方法从 managedBean。这也行不通。

还有其他方法可以从 Java 代码中禁用 CommandButton 还是我遗漏了什么? 我正在动态生成我的页面,所以我不能在 xhtml 中使用 disabled 属性。 我还将我的 commandButton 更新属性设置为更新父 p:outputPanel

提前致谢。

【问题讨论】:

  • 1.那么命令按钮在提交后会自动更新 ajax 吗? 2.您忘记详细说明“不起作用”。无论如何,从技术上讲,它与您在普通 XHTML 中的操作方式没有什么不同。用 Java 做的只是可读性和可维护性较差。
  • @BalusC 是的,命令按钮在提交后会自动更新 ajax :)

标签: jsf primefaces


【解决方案1】:

我的按钮在点击后变为禁用,然后立即返回启用。

如果 ajax update 覆盖按钮本身,就会发生这种情况。只需从中排除按钮并仅指定真正需要更新的部分。

【讨论】:

  • 如果我需要更新按钮本身怎么办?有什么办法吗?
【解决方案2】:

你可以在你的 bean 中声明一个字段

boolean disable = false;

点击监听器中的按钮后:

disable = true;

在您的按钮中使用以下代码:

<p:commandButton id="x" disabled="#{bean.disable}" update="@form:x" />

【讨论】:

    猜你喜欢
    • 2011-01-23
    • 1970-01-01
    • 2014-08-23
    • 2023-01-30
    • 2016-07-03
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多