2013-07-18 2 views
1

부유 한 글꼴의 팝업 메뉴를 이해하려고합니다. 다음 작업을 수행하려고합니다. 텍스트 상자와 버튼이 있습니다. 난 텍스트 상자에 텍스트를 작성하고, 작성된 텍스트의 값이 "popup"이면 팝업 메뉴를 호출하려고합니다.부유 한면의 조건에 따라 팝업을 호출하는 방법은 무엇입니까?

<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> 

와 콩 : 여기에 코드입니다 "(#은 {popupCall.showpopup은()}) 경우"를 온 클릭 방식의 내부는 항상 통화가 난 넣지 않으면

@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; 
} 

} 

버튼을 누르면 showpopup() 메서드가 true를 반환하지만 팝업이 표시되지 않습니다. 또한 showpopup() 메서드 내에서 return true를 쓰면 onclick 내부의 if 문이 작동하지만 지금은 그렇지 않습니다. 아무도 도와 줄 수 있습니까? 감사합니다

+0

[리치 조건부 호출 : 팝업 패널]의 중복 가능성 (http://stackoverflow.com/questions/8957560/conditional-invocation-of-richpopup-panel) – Andy

+0

대답은 링크에 있습니다. 네가 이해하지 못한다면 나 한테 알려줘. – Andy

+0

@ 앤디, 나는 그것을 시도하고 있지만, 거기에 "if"onclick 메서드 내부에 문제가 있다고 생각합니다. 질문을 편집했습니다. – yrazlik

답변

2

oncomplete 대신 onclick을 사용하려는 경우 일부 비즈니스 로직을 실행 한 후 <rich:popupPanel>을 표시하려고합니다. 내가

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

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

을 변경하면 팝 업 나타났다. 또한 action 요구 String (또는 null) 탐색뿐만 showpopup()boolean 그래서 당신이 그 문제를 해결 할 수 있습니다 반환 기억

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

에주의하십시오.

나는이 링크가 도움이된다는 것을 알았습니다. (첫 번째 링크의 경우 투표 수가 가장 많았습니다).

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

관련 문제