2016-09-02 46 views
0

私はserveral Dialogを持つフォームを持っています。そのうちの1つはパラメータ付きの関数を呼び出しますが、なぜ動作していないのかわかりません。他のダイアログが完全に動作しています。 QueryViewと呼ばPrimeFacesでパラメータが呼び出されていない関数

<p:dialog widgetVar="windowsConfirmOperation" position="center middle" resizable="false" 
header="¡Warning!" closable="false" showEffect="fade" hideEffect="fade" 
id="idWindowsConfirmOperation" modal="true"> 
<p:panel> 
    <div class="DispBlock Responsive100"> 
     <p:outputLabel value="Are you sure?" 
      escape="false"/> 
    </div> 
</p:panel> 
<div class="DispBlock ui-contenedor-botones-accion Fright"> 
    <p:commandButton value="YES"        
     oncomplete="PF('windowsConfirmOperation').hide();" 
     update="@form" process="@form" 
     action="#{queryView.confirmOperation('true')}"> 
    </p:commandButton> 
    <p:commandButton value="NO"        
     oncomplete="PF('windowsConfirmOperation').hide();" 
     update="@form" process="@form" 
     action="#{queryView.confirmOperation('false')}"> 
    </p:commandButton> 
</div> 
</p:dialog> 

そして、私のビュークラス:パラメータを持つダイアログ

@SessionScoped 
@ManagedBean 
public class QueryView {   

     .... 

     public void confirmOperation(String confirm) { 
     if ("true".equals(confirm)) { 
      doSomeThing(); 
     } 
    }  
} 

は私がデバッグするが、ダイアログが関数を呼び出すことはありません。ブールのパラメータをStringに変更しましたが、動作しません。私は間違って何をしていますか?

よろしくお願いいたします。

+0

コードはきれいに見えます...きれいにして再コンパイルしましたか? – Kenshin

+0

'h:form'要素はありませんか? – jNick

+0

@Arunたくさんの時間をきれいにして再コンパイルします。 – Chema

答えて

0

最後に私のロジックを変更し、コードが機能します。

<p:dialog widgetVar="windowsConfirmOperation" position="center middle" resizable="false" 
header="¡Warning!" closable="false" showEffect="fade" hideEffect="fade" 
id="idWindowsConfirmOperation" modal="true"> 
<p:panel> 
    <div class="DispBlock Responsive100"> 
     <p:outputLabel value="Are you sure?" 
      escape="false"/> 
    </div> 
</p:panel> 
<div class="DispBlock ui-contenedor-botones-accion Fright"> 
    <p:commandButton value="YES"        
     oncomplete="PF('windowsConfirmOperation').hide();" process="@this" 
     action="#{queryView.confirmOperation}"> 
    </p:commandButton> 
    <p:commandButton value="NO"        
     onclick="PF('windowsConfirmOperation').hide();" 
     > 
    </p:commandButton> 
</div> 
</p:dialog> 
  1. 私は "この@" = プロセスのためのparamプロセス= "@フォーム" に変更しました。私はすべてのフォームではなく、ボタンを処理します。
  2. NOボタンはダイアログを閉じるだけでどのように変更しましたか?今はonclick関数のみを使用してください。
  3. はいボタンが機能を使用するだけで、パラメータは必要ありません。私はブールがあまりにも作品渡すと :

    public void confirmOperation() { 
        doSomeThing(); 
    } 
    

編集:だから私の機能に変更しました。私のコードは正常に動作し、これらの変更により

action="#{queryView.confirmOperation('true'}"> 

とJavaファイル

public void confirmOperation(Boolean something) { 
    doSomeThing(); 
} 

よろしくお願いいたします。

関連する問題