【问题标题】:p:dialog box not showing updated valuesp:对话框未显示更新的值
【发布时间】:2016-07-31 09:14:37
【问题描述】:

我正在使用 primefaces 开发应用程序。 我的问题是我的 P:layout 具有北、南和中心布局,中心布局具有 xhtml 页面的动态包含,支持 bean 的 pageRoot 值包含 xhtml 页面名称。布局包含在“h:form”中

<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>

在某些时候,pageRoot 属性包括一个页面,该页面具有一个 dataList 以显示 commandlink 的多个链接,如下所示

<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>

现在f:setPropertyActionListener 正在支持 bean 中设置选定的值,我在该调用期间在支持 Bean 本身以及代表选定属性的设置器中设置另一个属性,即主课程和详细课程是子集List 类型的主菜。在 backing bean 中设置了主要课程值,并设置了详细课程值。单击 xhtml 页面上呈现的链接时,会呈现对话框,但不会出现所选链接子集中的值,尽管出现了 maincourse 值。

任何想法/建议我做错了什么?

【问题讨论】:

  • 尝试将对话框放在数据列表之外。您现在为 datalist 中的每个“记录”生成一个具有相同 widgetId 的对话框(这是不行的)。提问时请创建minimal reproducible example。是例如layout 相关吗?如果不删除它。

标签: primefaces datatable dialog xhtml


【解决方案1】:

在对话框中的 panelgrid 之前添加 p:outputPanel 并更新值 p:outPanel 它在对话框呈现时显示

【讨论】:

  • 那么为什么不将其发布为答案(或者如果您不确定它会解决它,请发表评论)。为什么更新对话框还不够好?
  • :topPnlCourseDataListDialogPnl 它适用于更新对话框
  • @Kukeltje p:outputPanel 是一个自动更新组件,所以我建议
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-29
  • 1970-01-01
  • 2013-06-28
  • 2016-05-30
  • 2017-02-05
  • 2017-07-03
  • 1970-01-01
相关资源
最近更新 更多