0

Primefaces3.4.2をJSF2.0で使用しています

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"と、selectOneMenu Converterクラスは呼び出されませんが、作成するとappendToBody="false"Converterクラスが呼び出されます。

これの理由は何でしょうか?appendToBody="false"ポップアップダイアログが使用できなくなり、マウスを使用してナビゲートできなくなります。

この問題を解決するにはどうすればよいですか?


を削除し、appendToBodyダイアログ<h:form/>内に(コンテンツとともに)配置します。

の目的は、ダイアログがHTML出力appendToBody="false"の本文内(したがってメイン内)に確実にレンダリングされるようにすることです。<h:form/>

がないappendToBody="false"と、ダイアログがマークアップの最後に追加されてしまう可能性があり、<body/>その結果、ダイアログ内の何も実行されません。

ダイアログに追加<h:form/>すると、ダイアログが外部に表示された場合<body/>でも、サーバーに送信できるようになります。

4

1 に答える 1

1

を削除してappendToBody<h:form/>ダイアログ内に (その内容とともに) を配置します。

の目的は、ダイアログがHTML 出力appendToBody="false"の body 内 (したがって main 内) にレンダリングされるようにすることです。<h:form/>

がないappendToBody="false"と、ダイアログが のマークアップの最後に追加される可能性があり、<body/>その結果、ダイアログ内の何も実行されません。

ダイアログに追加<h:form/>すると、ダイアログの外に出たとしても<body/>、サーバーに送信できるようになります。

于 2013-02-22T21:08:45.540 に答える