2015-05-06 2 views
0

Я хотел бы показать разные диалоги с одной кнопки, зависит от расчета backingbean. Как показать msg «Билл no уже оплачен», если клиент вводит дубликат счета нет, если счет нет в порядке, чем показывает, как «Билл был успешно оплачен». Как я могу это достичь?Неполадки: как установить динамическое значение незавершенного события, например oncomplete = "# backingbean.oncomplete"

backingbean класс:

private String oncomplete=""; 

public String getOncomplete() { 
    return oncomplete; 
} 

public void setOncomplete(String oncomplete) { 
    this.oncomplete = oncomplete; 
} 

public void bill_fees_calculation(){ 
    if(bill_no=="wrong"){ 
     oncomplete = "PF('wrongDialog').show()";   
    } 
    else{ 
     oncomplete = "PF('rightDialog').show()"; 
    } 
} 

В моей XHTML:

<p:commandButton oncomplete="#{backingbean.bill_fees_calculation}" icon="ui-icon-search" title="View" update=""/> 

<p:dialog header="Bill Info" widgetVar="wrongDialog" modal="false" showEffect="fade" hideEffect="explode" resizable="false" closable="true" closeOnEscape="true"> 

     <p:outputPanel id="billDetail" autoUpdate="true" style="text-align:center;"> 
      <p:panelGrid columns="2" columnClasses="label,value">      

       <h:outputText value="Output:" /> 
       <h:outputText value="Bill no has been paid already" />           
      </p:panelGrid> 
     </p:outputPanel> 
    </p:dialog> 

<p:dialog header="Bill Info" widgetVar="rightDialog" modal="false" showEffect="fade" hideEffect="explode" resizable="false" closable="true" closeOnEscape="true"> 

     <p:outputPanel id="billDetail" autoUpdate="true" style="text-align:center;"> 
      <p:panelGrid columns="2" columnClasses="label,value">      

       <h:outputText value="Output:" /> 
       <h:outputText value="Bill no has been paid successfully" />           
      </p:panelGrid> 
     </p:outputPanel> 
    </p:dialog> 

ответ

3

Вы можете использовать RequestContext#execute() программно объявить код JavaScript, который должен быть выполнен на полный из текущего запроса AJAX.

public void billFeesCalculation() { 
    RequestContext requestContext = RequestContext.getCurrentInstance(); 

    if ("wrong".equals(billNo)) { 
     requestContext.execute("PF('wrongDialog').show()"); 
    } 
    else{ 
     requestContext.execute("PF('rightDialog').show()"); 
    } 
} 

Обратите внимание, что я установил другие (severe) вопросы в оригинальном фрагменте.


Unrelated к конкретной проблеме, было бы более чистым и DRY код, если используется только один диалог с динамической (лица) сообщения.

Смежные вопросы