primefaces ajax 不工作
prime faces ajax not working
我们有一个包含以下 JAR 版本的 JSF 项目:
- Prime Faces 5.1
- JSF 2.0
- Javaee-api5
- 但是 Project Facets(在 eclipse 中)定义了 JSF 2.2,我们从未更改过它。
- JPA 2 (javaee-api 5)
- Ejb 3.0
我们的 ajax 不工作。
<p:selectOneRadio id="enrolledInPlanFlag" value="#{phInfoBean.enrldPlanFlag}" label="Action" >
<f:selectItem itemLabel="Yes" itemValue="Yes" />
<f:selectItem itemLabel="No" itemValue="No" />
<p:ajax process="enrolledInPlanFlag" update="@form"/>
</p:selectOneRadio>
<p:dialog id="dialog" header="APTC Warning" widgetVar="dlg1" modal="true" height="200" width="500" resizable="false" rendered="#{phInfoBean.enrldPlanFlag eq 'Yes'}">
我正在尝试显示基于 selectOneRadio 的对话框。但是 AJAX 不工作,我们有奇怪的情况,有时它工作,有时它不。
我们已经用 @ViewScoped 注释了托管 bean。
请帮忙。
- 让它发挥作用
您从不在代码中显示对话框。您可以将 oncomplete
事件附加到您的 p:ajax
<p:ajax process="enrolledInPlanFlag" update="@form" oncomplete="PF('dlg1') != null ? PF('dlg1').show() : ''" />
条件 PF('dlg1') != null
是必需的,就好像您选择 "No" 您的对话框不再在您的页面中呈现,因此 PF('widgetVarOfDialog') 无法访问。
- 补充说明
我会通过以下方式改进此代码:
- 将
enrldPlanFlag
更改为布尔值而不是字符串(更清洁的 IMO)
- 如果布尔值为真,则在侦听器中以编程方式显示对话框(从您的 p:ajax 调用)
为什么?将逻辑保留在您的 bean 而不是 .xhtml 页面中
我们有一个包含以下 JAR 版本的 JSF 项目:
- Prime Faces 5.1
- JSF 2.0
- Javaee-api5
- 但是 Project Facets(在 eclipse 中)定义了 JSF 2.2,我们从未更改过它。
- JPA 2 (javaee-api 5)
- Ejb 3.0
我们的 ajax 不工作。
<p:selectOneRadio id="enrolledInPlanFlag" value="#{phInfoBean.enrldPlanFlag}" label="Action" >
<f:selectItem itemLabel="Yes" itemValue="Yes" />
<f:selectItem itemLabel="No" itemValue="No" />
<p:ajax process="enrolledInPlanFlag" update="@form"/>
</p:selectOneRadio>
<p:dialog id="dialog" header="APTC Warning" widgetVar="dlg1" modal="true" height="200" width="500" resizable="false" rendered="#{phInfoBean.enrldPlanFlag eq 'Yes'}">
我正在尝试显示基于 selectOneRadio 的对话框。但是 AJAX 不工作,我们有奇怪的情况,有时它工作,有时它不。
我们已经用 @ViewScoped 注释了托管 bean。
请帮忙。
- 让它发挥作用
您从不在代码中显示对话框。您可以将 oncomplete
事件附加到您的 p:ajax
<p:ajax process="enrolledInPlanFlag" update="@form" oncomplete="PF('dlg1') != null ? PF('dlg1').show() : ''" />
条件 PF('dlg1') != null
是必需的,就好像您选择 "No" 您的对话框不再在您的页面中呈现,因此 PF('widgetVarOfDialog') 无法访问。
- 补充说明
我会通过以下方式改进此代码:
- 将
enrldPlanFlag
更改为布尔值而不是字符串(更清洁的 IMO) - 如果布尔值为真,则在侦听器中以编程方式显示对话框(从您的 p:ajax 调用)
为什么?将逻辑保留在您的 bean 而不是 .xhtml 页面中