【问题标题】:Primefaces Dialog not updatingPrimefaces 对话框未更新
【发布时间】:2011-11-21 15:32:23
【问题描述】:

我在更新 primefaces 对话框时遇到问题

目前我正在显示一个 primefaces 对话框,其中包含一些可编辑格式的表单元素。 表单中有一些可用的输出文本字段,单击更改链接时可以使用更改链接,输出文本字段应以可编辑格式显示在对话框中,其中包含接受和取消按钮。

下面是我正在使用的代码 sn-p 我正在调用一个侦听器,在该侦听器中我将值设置为要以可编辑格式显示在对话框中的属性,并且每次我使用 's 更新对话框时渲染属性。

render=id 对话框。

此外,当我尝试更新对话框内的内容时,我收到一些 ajax 错误 id not found。

即使这不起作用,我也尝试将对话框放在面板中。

            <h:panelGrid columns="5" >
            <h:outputText value="Overrride State Date" />
            <p:spacer width="5" height="5" />
            <h:outputText value="Overrride End Date" />
            <p:spacer width="5" height="5" />
            <h:outputText value="New Value"/>
            <p:calendar value="#{certInquiry.ovrStartDt}" showOn="button"/>
            <p:spacer width="5" height="5" />
            <p:calendar value="#{certInquiry.ovrEndDt}" showOn="button"/>
            <p:spacer width="5" height="5" />
            <h:inputText value="#{certInquiry.newVal}"/>
            </h:panelGrid>  
            <div align="center">
            <p:commandButton value="Accept"
                oncomplete="xyz.hide()" /> <p:spacer width="10"
                height="5" /> <p:commandButton value="Cancel"
                onclick="xyz.hide()" type="reset" /></div>

                </h:form>
        </p:dialog>

这里我正在使用的渲染属性更新对话框,但我无法更新对话框,并且当我刷新屏幕时,它仍然显示以前的数据,数据显示正确。

请帮我解决这个问题。

提前致谢。

【问题讨论】:

    标签: ajax jsf primefaces


    【解决方案1】:

    你试试这个代码:

    <p:dialog widgetVar="xyz" >
       <p:panel id="xyzBody">
    ...
    </p:panel>
    </p:dialog>
    
    
    <p:commandButton value="Open dialog"  oncomplete="xyz.show()"
        update="xyzBody"
         actionListener="fillFieldListener"  /> 
    

    【讨论】:

      【解决方案2】:

      首先,您应该发布entire xhtml 代码,而不仅仅是对话框内容和结束标签...

      但是我想我知道问题出在哪里:您不应该在对话框中使用render 属性,它的javascript 函数showhide 绰绰有余。此外,您应该知道you can't update something you haven't rendered,因为在 html 页面(客户端/用户端)中找不到未渲染的组件。你所要做的就是:

          <h:form>
                  <p:dialog id="myDialog" header="My Options" widgetVar="xyz" showEffect="fade" hideEffect="fade">
      
                  <h:panelGrid columns="5" >
                  <h:outputText value="Overrride State Date" />
                  <p:spacer width="5" height="5" />
                  <h:outputText value="Overrride End Date" />
                  <p:spacer width="5" height="5" />
                  <h:outputText value="New Value"/>
                  <p:calendar value="#{certInquiry.ovrStartDt}" showOn="button"/>
                  <p:spacer width="5" height="5" />
                  <p:calendar value="#{certInquiry.ovrEndDt}" showOn="button"/>
                  <p:spacer width="5" height="5" />
                  <h:inputText value="#{certInquiry.newVal}"/>
                  </h:panelGrid>  
                  <div align="center">
                  <p:commandButton value="Accept"
                      oncomplete="xyz.hide()" /> <p:spacer width="10"
                      height="5" /> <p:commandButton value="Cancel"
                      onclick="xyz.hide()" type="reset" /></div>    
              </p:dialog>
      <p:commandButton value="Update Dialog" action="#{MyBean.MyMethod}" update="MyDialog" />
      </h:form>
      

      所以你的表单应该在对话框之外,这样更好更简单;如您所见,UpdateDialog 按钮位于对话框之外,并在运行操作方法后更新您的对话框(但也可以更新对话框内的面板)。 我还看到那些接受和取消按钮只是为了测试,因为它们在没有任何服务器实现的情况下做同样的事情......

      【讨论】:

        【解决方案3】:

        你的对话框在&lt;ui:include&gt;标签内吗?

        如果是,则检查页面的源代码或 html,并确认对话框仅添加到页面一次。 (您可能将appendToBody 设置为true

        我遇到了这个问题,对话框被添加到正文 multiple times(可能是由于 JSF 生命周期)。这会导致意外的结果,例如对话框没有得到更新。

        我通过删除&lt;ui:include&gt; 之外的对话框解决了这个问题,或者您可以有条件地渲染您的&lt;ui:include&gt; content

        PS:我相信您已经遵循其他答案,例如将对话框内容包装在容器中。 正如@spauny 提到的,您应该发布所有相关的 xhtml 代码。

        【讨论】:

          【解决方案4】:

          我看到了一个结局,但不是整个画面,虽然我一直在这条路上,并为你找到答案。

          如果您在对话框之外有表单,请尝试将其安排在对话框内。例如,

          <p:dialog ...>
              <h:form>
                  ...contents...
              </h:form>
          </p:dialog>
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-09-06
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多