现在,我们在可数据行中放置了两个素面对话框。到目前为止,这是有效的,但我想把它们移出数据表。
因为总是只有一个实例显示给用户的特定对话框,我想通过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>
你认为这是可行的吗?或者你认为已经有类似的解决方案了吗?谢谢。
听起来你想要这样的东西…只需确保存储要编辑的实例的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>