0

<p:toolBar>を含むがあり ます<p:commandButton>
が、テンプレートを使用しているため、このツールバーはフォームに配置されてい ません 。それらの1つが機能していません


例 :

<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">更新されますが、クリックしたときに新しいボタン
が必要な場合は、機能していない開くボタンを有効/無効にします。フォームを開くボタンが更新されているため、フォームに配置されている場合、 update="frm"は、ツールバーフォームから参照できない例外を発生させ ます私の問題の助けをお願いします<p:toolBar><h:form id="frm"><p:toolbar><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次に、バッキング Beanの を呼び出し(説明したように、そのフラグを内部に設定します)、最後に[開く] ボタンを更新します。

<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 に適切なゲッター/セッターを用意し、次のようにフラグを設定します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 に答える