禁用托管bean中的动态创建按钮

时间:2015-06-19 13:39:33

标签: jsf primefaces

我在Primefaces中动态创建了CommandButton。

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

  1. 将widgetWar(commandButton.setWidgetVar("pony");)属性添加到我的commandButton并设置onclick行为(commandButton.setOnclick("PF('pony').disable();");)。 WidgetVar属性在页面上的所有元素中是唯一的。这种方法不起作用 - 点击后我的按钮变为禁用,然后立即返回启用。
  2. 通过调用按钮setDisabled UiComponent上的((CommandButton) component).setDisabled(true);方法,从managedBean。这也行不通。
  3. 有没有其他方法可以从Java代码中禁用CommandButton或者我错过了什么? 我动态生成了我的页面,所以我不能在xhtml中使用disabled属性。 我还设置了commandButton update属性来更新父p:outputPanel

    提前致谢。

2 个答案:

答案 0 :(得分:1)

  点击后,

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

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

答案 1 :(得分:0)

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

boolean disable = false;
单击收听者中的按钮后

disable = true;
按钮中的

使用此代码:

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