从javascript更新primefaces对话框内容

时间:2014-07-16 06:54:59

标签: jsf-2 primefaces

现在我们在数据表行中放置了几个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>

e.g。我想要实现的目标:

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

你觉得它可行吗,或者你认为野外已有类似的解决方案吗?感谢。

1 个答案:

答案 0 :(得分:0)

听起来你想要这样的东西...只是确保,你存储要编辑的实例的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>