Jsf 2 通过JavaScript函数刷新对话框内的内容

Jsf 2 通过JavaScript函数刷新对话框内的内容,jsf-2,primefaces,jqplot,Jsf 2,Primefaces,Jqplot,我在处理图表时遇到了一个问题 问题 当我点击一个折线图时,会出现一个包含另一个折线图的对话框 示例代码 <p:lineChart id="chartOne" rendered="cond1"/> <p:dialog widgetVar="dialogOne"> <p:lineChart id="chartTwo" rendered="cond1"/> </p:dialog> <script> $('#chartOne

我在处理图表时遇到了一个问题

问题

当我点击一个折线图时,会出现一个包含另一个折线图的对话框

示例代码

<p:lineChart id="chartOne" rendered="cond1"/>

<p:dialog widgetVar="dialogOne">
     <p:lineChart id="chartTwo" rendered="cond1"/>
</p:dialog>

<script>
   $('#chartOne').bind('jqplotClick',
        function (ev, seriesIndex, pointIndex, data) {
            dialogOne.show();
        }
   );
</script>

$('#chartOne').bind('jqplotClick',
函数(ev、序列索引、点索引、数据){
dialogOne.show();
}
);
现在我可以在点击图表时显示对话,但对话框中的图表并没有刷新。我不太了解如何通过JavaScript函数刷新内容

更新1:

条件是:chartOne应在其整个画布上提供单击(而不仅仅是数据点或系列)chartTwo仅当发生dialogOne.show()时才应渲染

任何帮助…非常感谢

尝试以下方法:

<p:lineChart id="chartOne" rendered="cond1" >
    <p:ajax event="itemSelect" listener="#{bean.action}" update="chartTwo" oncomplete="dialogOne.show()" />
</p:lineChart>

<p:dialog widgetVar="dialogOne">
     <p:lineChart id="chartTwo" rendered="cond1"/>
</p:dialog>

在支持bean的方法
action()
上,您应该为chartTwo准备好数据

根据用户手册,图表的可点击部分将是系列,而不是整个图表。检查


有关详细信息和工作示例。

使用动态对话框可能是一种解决方案

从文件中:

动态模式允许对话框在显示内容之前获取其内容,而不是在页面加载时获取,这有助于减少初始页面加载时间。默认值为false

只需如下定义对话框:

<p:dialog widgetVar="dialogOne" dynamic="true">
第二次更新:


使用Javascript中的
p:remoteCommand
调用
updateDialog()

事件“itemSelect”在我的情况下不会触发。我认为对于图表单击,需要绑定您正在运行哪个版本的primefaces?根据PF 3.4手册:3.12.9 Ajax行为事件itemSelect是图表中唯一的Ajax行为事件,单击一系列图表时会触发此事件。如果您定义了侦听器,将通过传递org.primefaces.event.ItemSelectEvent实例来执行它。对不起,我没有正确解释我的要求。”jqplotClick’在单击Outside datatpoints时也起作用,但itemselect事件仅用于系列选择。最终,我的目标是提供可点击的图表(不考虑数据点)画布,以便在对话框中显示选定的图表。然后更新您的问题。哎呀,我错过了一个简单的概念。谢谢。它避免了在显示对话内容之前加载对话内容。我也不需要刷新对话内容。这是有帮助的,但它仍然没有回答我的问题。如何通过JavaScript刷新对话框内的内容function@DipendraSingh如果我给出的答案没有回答你的问题,不要将其标记为已接受除此之外,我已经更新了我的答案。k…更新前您的解决方案在我的情况下运行良好,这就是我接受的原因。但实际问题并没有得到正确的回答。顺便说一句,谢谢你的更新works@DipendraSingh我忘了添加如何调用远程命令。已将其添加到更新中。;-)
<h:form id="formId">
    <p:dialog id="dialog" />
</h:form>
<p:remoteCommand name="updateDialog" update=":formId:dialog"/>