2013-02-22 92 views
0

我使用Primefaces 3.4.2 JSF 2.0<P:對話框appendToBody = 「true」 不會叫Converter類

在JSF頁面對話框彈出,我有以下。

<p:dialog header="Create New Request" style="font-weight:bold" 
     widgetVar="newDialog" resizable="false" id="newDlg" 
     showEffect="fade" hideEffect="fade" appendToBody="true" 
     modal="true" position="center top" width="850" height="450"> 
     <p:panelGrid columns="2"> 
     <h:outputLabel value="Employee" for="employee" /> 
      <p:selectOneMenu id="employee" value="#{mymb.employee}" 
      converter="#{employeeConverter}"> 
     <f:selectItems value="#{mymb.employeeItems}" var="emp" 
     itemLabel="#{emp.employeeName}" itemValue="#{emp.employeeNumber}"/> 
     <p:ajax listener="#{mymb.loadDepartments}" process="@this"/> 
</p:selectOneMenu> 

     </p:panelGrid> 
     <p:separator /> 
      </p:dialog> 

如果我使用appendToBody="true",然後selectOneMenuConverter類不被調用,但如果我讓appendToBody="false",然後Converter類被調用。

這可能是什麼原因? appendToBody="false"使我的彈出對話框不可用,無法使用鼠標進行導航。

我該如何解決這個問題?

回答

1

取出appendToBody,把一個<h:form/>你的對話框內(連同它的內容)。

appendToBody="false"的目的是爲了確保您的對話框在HTML輸出的正文內(因此在主要的<h:form/>內)呈現。

如果沒有appendToBody="false",對話框可能最終被追加到<body/>標記的末尾,因此它內部沒有任何內容會被執行。

添加<h:form/>到您的對話框確保即使它<body/>外捲起它仍然可以提交到服務器

+0

kolossus謝謝,原因我已經把之外對話是因爲我打電話彈出對話框從一個按鈕和更新的按鈕,我給出了:formname:idofdialog。 – user75ponic 2013-02-22 21:24:07

+0

還有一點就是我已經把內部對話,當我打開對話框,彈出窗口顯示一樣,當我使用appendToBody =「假」,即不能用鼠標使用的部件,只有tab鍵我能夠瀏覽。 – user75ponic 2013-02-22 21:26:21

+0

kolossus如果我使用把內部對話和使用appendToBody =「true」時,轉換器類被調用。 – user75ponic 2013-02-22 21:28:05

相關問題