【问题标题】:Updating primefaces dialog content from javascript从 javascript 更新 primefaces 对话框内容
【发布时间】:2014-09-06 14:05:28
【问题描述】:

现在我们将几个 primefaces 对话框放在数据表行中。到目前为止,这很有效,但我想将它们移出数据表。

因为始终只向特定对话框的用户显示一个实例,所以我想在将其弹出给用户之前通过 Javascript 更新它的值。对于仅包含几个组件且信息已在客户端可用的简单对话框就是这种情况。

到目前为止的情况。 (它是 HTML,不是 JSF,因为我现在没有 JSF 代码)

<table>
  <tr>
    <td>
      <a onClick="show('dialog');" />
      <div id='dialog'> <!-- the dialog -->
        <input type="text" name="field" value="value" />
      </div>
    </td>
  </tr>
</table>

例如我想要达到的目标:

<table>
  <tr>
    <td>
      <a onClick="updateDialog('dialog',{'field', 'value'}); show('dialog');" />
    </td>
  </tr>
</table>

<div id='dialog'> <!-- the dialog -->
  <input type="text" name="field" value="value" />
</div>

您认为这是可行的,还是您认为已经有类似的解决方案在野外?谢谢。

【问题讨论】:

  • 为什么要发布生成的 HTML 而不是 JSF xhtml 页面?我在这里看不到您定义对话框的任何数据表。
  • 我还没有在 JSF 中实现我的解决方案,但是从 HTML 中你可以看到我想要实现的目标。
  • 你对 JSF 有什么想法吗?
  • 不清楚我想用 HTML 做什么。当然它是用 JSF 实现的,但是我没有带代码,所以我放了一个示例渲染输出。

标签: jsf-2 primefaces


【解决方案1】:

听起来你想要这样的东西......只要确保你存储要编辑的实例的 bean 在请求中存活下来。请务必阅读您可以免费下载的 PrimeFaces 文档中的部分处理和部分渲染:http://www.primefaces.org/documentation

<h:form id="tableForm">
  <p:datatable value="#{carBean.cars}" var="car" ...>
    <p:column>
      <p:commandButton value="edit" action="#{carBean.edit(car)}" process="@this" update=":editForm" oncomplete="PF('carDialog').show();"/>
    </p:column>
  ...
  </p:datatable>
</h:form>

<h:form id="editForm">
  <p:dialog widgetVar="carDialog" rendered="#{carBean.carToEdit ne null}">
    <p:inputText value="#{carBean.carToEdit.brand" placeholder="brand" ... />

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

【讨论】:

  • 是的,我认为它适用于更复杂的对话框。但我最初想到的是从 javascript 更新对话框,用于简单的情况,例如用于确认或简单的输入字段。所以不需要额外的 ajax 请求来加载对话框。
  • 您可以通过在命令按钮的更新参数中使用更具体的标识符来更新对话框的特定部分。像 :editForm:brand 一样在对话框中更新 ID 为 brand 的输入字段。
猜你喜欢
  • 2012-05-26
  • 2014-08-31
  • 1970-01-01
  • 1970-01-01
  • 2015-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多