Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 从托管bean禁用动态创建的按钮_Jsf_Primefaces - Fatal编程技术网

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

Jsf 从托管bean禁用动态创建的按钮,jsf,primefaces,Jsf,Primefaces,我对Primefaces中Dynamicly创建的CommandButton有问题 我想在用户单击(提交)后禁用该按钮。我试过两种方法: 通过将widgetWar(commandButton.setWidgetVar(“小马”);)属性添加到我的commandButton并设置onclick行为(commandButton.setOnclick(“PF('pony').disable();”);)。WidgetVar属性在页面上的所有元素中都是唯一的。这种方法不起作用-单击后的“我的按钮”变为“

我对Primefaces中Dynamicly创建的CommandButton有问题

我想在用户单击(提交)后禁用该按钮。我试过两种方法:

  • 通过将widgetWar(
    commandButton.setWidgetVar(“小马”);
    )属性添加到我的commandButton并设置onclick行为(
    commandButton.setOnclick(“PF('pony').disable();”);
    )。WidgetVar属性在页面上的所有元素中都是唯一的。这种方法不起作用-单击后的“我的按钮”变为“禁用”,然后立即返回“启用”
  • 通过调用按钮
    UiComponent
    ((CommandButton)组件)上的
    setDisabled
    方法从managedBean启动。setDisabled(true)。这也不行
  • 有没有其他方法可以从Java代码中禁用CommandButton,或者我遗漏了什么? 我正在动态生成页面,因此无法在xhtml中使用disabled属性。 我还将commandButton更新属性设置为更新父级
    p:outputPanel

    提前谢谢

    单击后我的按钮变为禁用,然后立即返回启用状态


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

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

    boolean disable = false;
    
    单击侦听器中的按钮后:

    disable = true;
    
    在按钮中使用以下代码:

    <p:commandButton id="x" disabled="#{bean.disable}" update="@form:x" />
    
    
    
    1。那么命令按钮是ajax在提交后更新自身?2.你忘了详细说明“不起作用”。在任何情况下,它在技术上与在普通XHTML中的实现方式没有什么不同。在Java中这样做只会降低可读性和可维护性。@BalusC是的,命令按钮是ajax在提交后更新自身:)如果我需要更新按钮本身怎么办?有什么办法吗?