2013-07-18 25 views
1

我想了解richfaces中的彈出式菜單。我正在嘗試執行以下操作:我有一個文本框和一個按鈕。我寫了一些文本到文本框中,如果寫入的文本的值是「彈出」,我想調用彈出菜單。下面是代碼:如何根據richfaces中的條件調用彈出窗口?

<h:form> 
     <h:inputText value="#{popupCall.text}"></h:inputText> 
     <a4j:commandButton action="#{popupCall.showpopup()}" onclick="if (#{popupCall.showpopup()}) #{rich:component('popup')}.show();"> 
     </a4j:commandButton> 

    </h:form> 

    <rich:popupPanel id="popup" modal="false" autosized="true" resizeable="false"> 
     <f:facet name="header"> 
      <h:outputText value="Popup panel" /> 
     </f:facet> 
     <f:facet name="controls"> 
      <h:outputLink value="#" onclick="#{rich:component('popup')}.hide(); 
       return false;"> 
       X 
      </h:outputLink> 
     </f:facet> 

    </rich:popupPanel> 

和bean:

@ManagedBean (name="popupCall") 
@VievScoped 
public class PopupCall { 

private String text; 

public String getText() { 
    return text; 
} 

public void setText(String text) { 
    this.text = text; 
} 
public PopupCall() { 
} 

public void checkText(){ 
    if(text.equals("popup")){ 
     //CALL POPUP MENU 
    } 
} 

public boolean showpopup(){ 
    if(text!=null && text.equals("popup")) 
     return true; 
    else 
     return false; 
} 

} 

如果我不把 「如果(#{popupCall.showpopup()})」 的onclick方法裏面總是調用時按鈕被按下,但現在即使showpopup()方法返回true,也不顯示彈出窗口。另外,在showpopup()方法中,如果我只寫了return true,那麼onclick中的if語句可以工作,但現在它不會。 任何人都可以幫助我嗎?謝謝

+0

[豐富的條件調用:彈出面板]的可能重複(http://stackoverflow.com/questions/8957560/conditional-invocation-of-richpopup-panel) – Andy

+0

的答案在鏈接中。如果你不明白,請告訴我。 – Andy

+0

@安迪謝謝我正在嘗試它,但我認爲onclick方法中的「if」存在問題。編輯問題 – yrazlik

回答

2

對於您的情況,您希望使用oncomplete而不是onclick,因爲您想在執行某些業務邏輯後顯示<rich:popupPanel>。當我改變

onclick="if (#{popupCall.showpopup()}) #{rich:component('popup')}.show();" 

oncomplete="if (#{popupCall.showpopup()}) #{rich:component('popup')}.show();" 

的彈出露面。另外要小心

action="#{popupCall.showpopup()}" 

記住action需求String(或null)用於導航,但 showpopup()返回一個boolean,所以你可能要解決這個問題。

我發現這些鏈接是有用的檢查出來(第一個鏈接,我喜歡最高票的那個)。

Primefaces onclick and onsuccess differences

EL expression inside p:commandButton onclick does not update/re-render on ajax request?

+0

@iceface讓我知道如果這不起作用。我正在使用Netbeans,一路上我遇到了一些麻煩。特別是,如果面板沒有彈出,請檢查js錯誤控制檯是否有錯誤消息。 – Andy

+0

是的,我已經想出瞭如何做到這一點,我只是看到了你的答案。我做了同樣的事情,謝謝 – yrazlik

+0

太棒了。很高興你解決了它。感謝您接受我的回答。我很感激。 – Andy