2012-02-20 48 views
0

我在下面的方法創建一個DIV節在我的頁面動作:命令按鈕不會調用

<div id="modalAlert" style="display: none;"> 
<h:panelGroup layout="block"> 
    <p>My Heading </p> 
    </h:panelGroup> 
    <h:panelGroup layout="block"> 
    </h:panelGroup><h:panelGroup layout="block"> 
    <h:commandButton id="btnSaveConfirmation" value="save" action="#{myBean.method}"> </h:commandButton>      
    </h:panelGroup>       
</div> 

,我使用以下JS腳本來顯示使用jQuery一個SimpleModal窗口:

function showAlert() { 
    fundpickerdialog = $('#modalAlert').modal({ 
     opacity : 100, 
     overlayCss: {backgroundColor:"#fff"}, 
     modal : true, 
     dataId : 'modalAlert', 
     classname: 'ui-dialog ui-widget ui-widget-content ui-corner-all ui-draggable ui-resizable', 
     closeOnEscape : false, 
     width : 50, 
     height : 50 
    }); 
} 

$(document).ready(function() { 

     showAlert(); 
    } 

}); 

模態窗口出現,但點擊保存按鈕時它不調用支持bean方法。

回答

0

你忘了形式的標籤(H:的commandButton必須位於表單中),包裹在div與標籤內容

嘗試這樣的事:

<div id="modalAlert" style="display: none;"> 
<h:form> 
    <h:panelGroup layout="block"> 
    <p>My Heading </p> 
    </h:panelGroup> 
    <h:panelGroup layout="block"> 
    </h:panelGroup><h:panelGroup layout="block"> 
    <h:commandButton id="btnSaveConfirmation" value="save" action="#{myBean.method}"></h:commandButton>     
    </h:panelGroup> 
</h:form>       
</div> 
+0

它只在表格內。我剛剛顯示了DIV部分,它是 – user1220373 2012-02-20 07:19:20

+0

表格的一部分,因爲我無法看到整個頁面...我會再次猜測...也許你在窗體內部形成了?無論如何試圖擺脫其他人的形式,並嘗試我發佈的代碼spinet – Daniel 2012-02-20 07:35:22

0

一些JavaScript/jQuery的模態對話方法將從HTML DOM樹中的當前位置移除表示模式對話框及其所有子對象的元素,並將其重新插入<body>的直接子對象,以防止跨各種瀏覽器的潛在定位和分層問題。由於您沒有將<form>放置在代表模式對話框的元素內,因此它最終將變爲無形式。

您確實需要將<h:form>放在之內表示模態對話框的元素。

此外,我建議使用JSF組件庫而不是任意的jQuery插件。例如,PrimeFaces就有一個<p:dialog>組件用於此目的。它已經考慮到了潛在的令人討厭的JSF相關副作用,而無需編寫任何額外的JS/jQuery代碼。

+0

嗨,不是它的問題,但primefaces不使用jQuery UI在其對話框中的封面,http://forum.primefaces.org/viewtopic。 php?f = 3&t = 18100「他們有自己的本機對話框:) :) – Daniel 2012-02-20 13:28:57

+0

@Daniel:謝謝,我已經編輯了答案。 – BalusC 2012-02-20 13:31:22