2014-07-16 59 views
-3

现在我们在数据表行中放置一对primefaces对话框。这工作到目前为止,但我想将它们移出数据表。从javascript更新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> 

你认为这是可行的,或者你觉得已经有类似的解决方案在那里在野外?谢谢。

+0

你为什么发布生成的HTML而不是JSF XHTML页面?我在这里看不到任何可定义对话框的数据表。 –

+0

我还没有在JSF中实现我的解决方案,但是从HTML中可以看到我想实现的目标。 – illEatYourPuppies

+1

你对JSF有什么想法吗? –

回答

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

是的,我认为它可以做更复杂的对话。但我最初想到的是从简单的情况下更新JavaScript对话框,例如用于确认,或简单的输入字段。所以不需要额外的ajax请求来加载对话框。 – illEatYourPuppies

+0

您可以通过在命令按钮的更新参数中使用更具体的标识符来更新对话框的特定部分。像':editForm:brand'一样在对话框中更新ID为'brand'的输入字段。 – truemmer