0

我有一个<p:toolBar>包含,但这个工具 栏没有放在 表单<p:commandButton>
中,因为我使用的是
模板其中一个不起作用

例子 :

<p:layout id="layout">  
    <p:layoutUnit position="west">  
      <p:toolbar>  
        <p:toolbarGroup align="left">  
           <p:commandButton type="button" value="New" icon="ui-icon-document" />  
           <p:commandButton type="button" value="Open" actionListener="#{bean.anyMethod}" update="frm"/>  
        </p:toolbarGroup>   
      </p:toolbar>    
    </p:layoutUnit>  

    <p:layoutUnit position="center">  
       <h:form id="frm">
         contents of h:form <p:inputText> and <p:outputText> componenets
       </h:form>
    </p:layoutUnit>  
</p:layout> 

我的问题是我<p:toolbar>不在表单中,当单击打开按钮时,actionListener正在工作并且<h:form id="frm">更新
但如果我想要新按钮,当单击以启用/禁用不起作用的打开按钮时,我无法<p:toolBar>放入表单,因为我的打开按钮正在更新<h:form id="frm">,如果<p:toolbar>放在表单中,那么 update="frm"<h:form id="frm">将给出一个无法从工具栏表单引用的异常,
请对我的问题有任何帮助

4

1 回答 1

0

如果我理解正确,您想在单击“打开”按钮时禁用“新建”按钮。

您不需要将工具栏放入表单中,您可以通过 JavaScript 禁用该按钮:

<p:commandButton type="button" value="New" 
                 icon="ui-icon-document" 
                 widgetVar="disablethis"/>  
<p:commandButton type="button" value="Open" 
                 actionListener="#{bean.anyMethod}" update=":frm"
                 onclick="disablethis.disable()"/>

还可以尝试:frm在您的update.

您还应该考虑onclick根据您的要求将操作更改为:

  • 启动

在 ajax 请求开始之前执行的客户端回调。

  • 点击

单击按钮时要执行的客户端回调。

  • 成功

ajax 请求成功时执行的客户端回调。

  • 未完成

ajax 请求完成时执行的客户端回调。

编辑

如果你想在没有显式 JavaScript 的情况下解决这个问题,你需要在你的支持 bean 中有一个标志(正如你已经发现的那样),指示打开按钮是否被禁用。然后调用anyMethod你的 backing bean (它将按照你的描述在里面设置那个标志),最后更新Open按钮:

<p:commandButton value="New" action="#{bean.anyMethod}" 
                 icon="ui-icon-document" update="button1"/>  
<p:commandButton id="button1" value="Open" type="button"
                 disabled="#{bean.disabled}"/>

在您的支持 bean 中有适当的 getter/setter,并在以下位置设置标志anyMethod

private boolean disabled;

public boolean isDisabled() {
    return disabled;
}

public void setDisabled(boolean disabled) {
    this.disabled = disabled;
}

public void anyMethod() {
    if (disabled) {
        disabled = false;
    } else {
        disabled = true;
    }
}
于 2012-10-23T08:48:36.750 回答