提问人:satya prakash Panigrahi 提问时间:11/1/2023 最后编辑:Jasper de Vriessatya prakash Panigrahi 更新时间:11/1/2023 访问量:57
来自 commandLink/ajax 的 JSF 调用对话框
JSF invoke dialog from commandLink/ajax
问:
我能够使用 ajax(存在于 .dialog
commandlink
dataTable
要求 - 我单击的 row() 对话框应显示单击的行的值。commandlink
Issue- 操作方法在显示后调用。这会导致旧数据显示在对话框中。我所说的旧数据是指来自上次点击的数据。f:setPropertyActionListener & commandLink's
dialog
问题 - 只有在操作方法执行完毕后,我才调用 ?dialog
f:setPropertyActionListener & commandLink's
法典-
<h:form id="form">
<p:outputPanel id="OPPanel">
<p:panel header="Panel Display">
<p:dataTable value="#{myBean.myDataList}" var="emp">
<p:column headerText="myData1">
<h:outputText value="#{emp.myData1}"/>
</p:column>
<p:column headerText="myData2">
<p:commandLink action="#{myActionClass.customizeData}" immediate="true">
<f:setPropertyActionListener value="#{emp.myData1}"
target="#{myBean.myData1Str}" />
<p:ajax event="click" update=":form:OPDialog"
oncomplete="PF('opDialogVar').show()"/>
<h:outputText value="#{emp.myData2}"/>
</p:commandLink>
</p:column>
</p:dataTable>
</p:panel>
</p:outputPanel>
<p:dialog header="Custom Dialog Display" widgetVar="opDialogVar" modal="true" showEffect="fade"
hideEffect="fade" resizable="false">
<p:outputPanel id="OPDialog" style="text-align:center;">
<p:panelGrid columns="2"
columnClasses="label,value">
<h:outputText value="Customized Data:"/>
<h:outputText value="#{myBean.myData1Str}"/>
</p:panelGrid>
</p:outputPanel>
</p:dialog>
</h:form>
附言-
- 我知道也可以从 java 代码内部调用对话框。但我想这样做。
- 我尝试添加到p:ajax,但这并没有改变行为/输出。
process="@this" global="false"
- 我不想将单击的行的值直接传递到对话框(如果可能的话)。当我单击时,首先操作方法应该完成。然后,应该只显示带有最新值的对话框。
commandlink
f:setPropertyActionListener & commandLink's
非常感谢对此的任何帮助/反馈:)
答:
0赞
satya prakash Panigrahi
11/1/2023
#1
从这个链接得到解决方案 - Primefaces 的 commandLink 仅适用于数据表的第一页
在我的上下文中修改解决方案,下面是我的工作代码 -
<p:column headerText="myData2">
<p:commandLink
action="#{myActionClass.customizeData}"
oncomplete="PF('opDialogVar').show()"
update=":form:OPDialog"
immediate="true" process="@this">
<f:setPropertyActionListener value="#{emp.myData1}"
target="#{myBean.myData1Str}" />
<h:outputText value="#{emp.myData2}"/>
</p:commandLink>
</p:column>
我在某处读到,ajax 是 commandlink 的一部分。现在我真正明白了这意味着什么。干杯
评论