2016-07-31 96 views
0

Ich bin in der Entwicklung einer Anwendung mit Primefaces. Meine Probleme ist, ich habe P: Layout von denen Norden, Süden und Zentrum Layout hat, hat das Zentrum Layout dynamische Include der XHTML-Seite der pageRoot Wert einer Backing-Bean enthalten die XHTML-Seite Name. „: Form h“p: Dialogfeld zeigt keine aktualisierten Werte

<p:layoutUnit position="center"> 
    <p:panel id="centreContent" style="border: none; margin-top: -15px; margin-left: -20px;"> 
    <ui:include src="#{menu.pageRoot}"/> 
    </p:panel> 
</p:layoutUnit> 

An einem gewissen Punkt der pageRoot Eigenschaft enthält eine Seite eine Datenliste mehrere Links von command wie unter

<p:panel id="topPnlCourseData" header="Course Data" toggleable="false" style="font-size: 12px; height: 250px;"> 
    <p:dataList id="topPnlCourseDataList" value="#{studentStudyMaterial.mainCourseList}" 
     var="courseList" type="unordered" itemType="none" paginator="true" rows="10" styleClass="paginated"> 
    <p:commandLink id="topPnlCourseDataListCmdLink" process="@this topPnlCourseDataList" 
      update="topPnlCourseDataListDialogPnl" oncomplete="PF('topPnlCourseDataListDialogPnl').show()" 
      title="View Detail"> 
     <f:setPropertyActionListener id="topPnlCourseDataListCmdLinkListener" value="#{courseList}" 
      target="#{studentStudyMaterial.mainCourse}" /> 
     <h:outputText value="#{courseList.mainCourseAbbriviation}"/> 
    </p:commandLink> 
    <h:outputText value="#{courseList.mainCourseAbbriviationDetail}" style="display:inline-block"/> 
    <p:dialog id="topPnlCourseDataListDialogPnl" header="Course Info" widgetVar="topPnlCourseDataListDialogPnl" 
      modal="true" showEffect="blind" hideEffect="explode" resizable="false" dynamic="true"> 
     <p:panelGrid columns="2" rendered="#{not empty studentStudyMaterial.mainCourse}" columnClasses="label,value"> 
     <h:outputText value="Id:"/> 
     <h:outputText value="#{studentStudyMaterial.mainCourse.mainCourseAbbriviation}" /> 
     <h:outputText value="Year" /> 
     <h:outputText value="#{studentStudyMaterial.mainCourse.mainCourseAbbriviationDetail}" /> 
     <h:outputText value="Color:" /> 
     <h:outputText value="#{studentStudyMaterial.mainCourseDetail.mainCourseLevelAbbriviationDetail}"/> 
     </p:panelGrid> 
    </p:dialog> 
    </p:dataList> 
</p:panel> 

die f:setPropertyActionListener Nun zeigen zu müssen setzt Das Layout ist in den beiliegenden die ausgewählten Werte in Backing Bean und ich setze eine andere Eigenschaft während dieses Aufrufs in der Backing Bean selbst sowie innerhalb dieses Setter im Namen der ausgewählten Eigenschaft, dh Hauptkurs und detaillierter Kurs ist Teilmenge des Hauptkurses vom Typ List. Die Hauptkurswerte werden festgelegt, und Kursdetails werden ebenfalls in der Backing-Bean festgelegt. Wenn Sie auf den Link klicken, der auf der Seite xhtml gerendert wurde, wird das Dialogfeld gerendert, aber die Werte in der Teilmenge des ausgewählten Links werden nicht angezeigt, obwohl die Werte für den Hauptkurs angezeigt werden.

Irgendeine Idee/Vorschlag, was ich falsch mache?

+0

Versuchen Sie, den Dialog außerhalb des Datalist setzen. Sie erzeugen jetzt einen Dialog mit einer identischen widgetId für jeden 'Datensatz' im Datenlistenprogramm (und das ist nicht in Ordnung). Und bitte erstellen Sie ein [mcve], wenn Sie Fragen stellen. Ist z.B. das 'Layout' relevant? Wenn nicht, entfernen Sie es. – Kukeltje

Antwort

-1

Add p: output vor panelgrid im Dialog und aktualisierten Wert p: outPanel seine Show beim Rendern Dialog

+0

Warum aktualisieren Sie dann nicht einfach das 'p: panelGrid'? – Kukeltje

+0

wird es auch funktionieren –

+0

Also warum nicht als Antwort (oder einen Kommentar, wenn Sie nicht sicher sind, wird es lösen). Und warum ist das Aktualisieren des Dialogs nicht gut genug? – Kukeltje