【问题标题】:Dialog not updating after populating model in action method在操作方法中填充模型后对话框未更新
【发布时间】:2013-07-05 20:21:03
【问题描述】:

我正在使用 primefaces 对话框。我有一个项目列表,每当我选择一个项目时,我希望对话框显示该项目名称。然而,这并没有发生。该对话框根本不显示任何名称,而不是显示项目名称。我已经在下面发布了我的代码。

       <h:form>
         <h:dataTable binding="#{table}" value="#{item.itemList}" >
          <h:column>
            <h:link value="#{item.itemList[table.rowIndex]}" outcome="item">
              <f:param name="itemName" value="#{item.itemList[table.rowIndex]}" />
            </h:link>
          </h:column>
          <h:column>
            <p:commandButton action="#{item.setItem(item.itemList[table.rowIndex])}" id="showDialogButton" 
                             type="link" value="Delete" onclick="dlg.show()" />
          </h:column>
        </h:dataTable>
        <br />
        <p:dialog header="Item" widgetVar="dlg" resizable="false">
          <!-- I've also tried Item: #{item.item} -->
          <p>Item: <f:attribute name="contentId" value="#{item.item}"/> </p>
          <p:commandButton id="submitButton" value="Yes" action=
              "#{item.deleteItem}" oncomplete="dlg.hide();">
          </p:commandButton>
          <p:commandButton id="cancelButton" value="Cancel" oncomplete="dlg.hide();" />
        </p:dialog>

      </h:form>

我的 getter 和 setter 只是通用的 getter 和 setter。

【问题讨论】:

  • 呃,你在哪里更新对话框的内容?到目前为止,我在发布的代码中没有看到这一点。如果您不更新对话框的内容,则不会更新..
  • 奥普斯。我认为当对话框打开时, f:attribute 会根据 item.item 在那个时间点自动更新。最好的方法是什么?使用 ajax 请求?
  • 不...您只需在&lt;p:commandButton update&gt; 中指定通常的方式。

标签: jsf jsf-2 primefaces dialog master-detail


【解决方案1】:

您忘记在打开之前更新对话框。

<p:commandButton ... update="dialogId" />

我还建议使用oncomplete 而不是onclick 打开对话框。

另见:

【讨论】:

  • 当我这样做时,我得到一个错误:“找不到标识符为“dialogId”的组件。我应该在哪里设置 dialogId?我尝试设置 p:dialog 和 f 的 id :attribute to "dialogId" 无济于事。
  • 这只是模范。如果您已经不知道如何通过客户端 ID 引用组件,请前往此答案:stackoverflow.com/a/8644762
  • 谢谢!这清楚了很多。我最近开始使用 JSF,我不知道你不能直接使用客户端 ID。
  • JSF 如果您记住它基本上是一个 HTML/CSS/JS 代码生成器,那么它更容易理解。如果你了解基本的 HTML/CSS/JS,那么 JSF 就会更容易理解。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多