2011-09-25 23 views
2

之前I所示有JSF執行2.0形式看起來像這樣RichFaces的poupPanel被動作執行

<h:form id="formId"> 
. 
. 
. 
     <a4j:commandButton action="#{bean.myAction}" value="foo" oncomplete="#{rich:component('popup')}.show();" /> 
</form> 
<rich:popupPanel id="popup" modal="false" autosized="true" 
           resizeable="false"> 

       <h:form id="form2"> 
        <h:panelGrid columns="1" >    
          <h:outputText id="idText" value="#{bean.message}" /> 
         <h:commandButton action="#" onclick="#{rich:component('popup')}.hide(); return false;" value="ok"/> 
        </h:panelGrid> 
        </h:form> 

      </rich:popupPanel> 

和豆方法

public String action(){ 
    message = "Some message"; 
    return ""; 
} 

點擊按鈕兩者「動作」和彈出顯示,但看起來像調用彈出窗口首先被執行。我從bean構造函數獲取消息而不是更改的消息。你有什麼想法如何延遲彈出顯示操作(它已經在oncomplete屬性下)?是否有任何通常的模式可以適用於此(動作會動態更改彈出式面板的內容,彈出式應該像結果消息一樣)。或者也許有一種方法來調用從Java代碼彈出顯示(例如從bean.action)? 謝謝

回答

1

您需要先重新呈現<rich:popupPanel>的內容,否則它仍會在第一次呈現內容時顯示內容。你就是用JavaScript重新顯示已經渲染但被CSS隱藏的內容。

<a4j:commandButton render=":popup:form2" ... />