我尝试在我的项目中实现一个可随处访问的对话框,我想知道这个解决方案是否可行。
该对话框包含在我的项目模板中。例如,我在登录页面上,我想在单击“登录”按钮并且身份验证成功时显示对话框。所以我抓住了链接到对话框的bean:
getFacesContext().getELContext().getELResolver().getValue(getFacesContext().getELContext(), null, beanName);
我设置了“显示”参数。(看看下面)
第一次,它正在工作。当我访问登录页面时,不会呈现对话框,当我单击按钮登录时,会设置属性显示,更新页面并出现对话框。但是如果我关闭它,当我再次单击该按钮时,我将无法再次触发它。(对话框已呈现但未显示)
我的对话框是这样的(我有 visible="true" 因为我想在每次渲染时显示):
<h:form>
<p:dialog header="Dialog" widgetVar="myDialog" rendered="#{bean.show}" visible="true">
<p:ajax event="close" listener="#{bean.onClose}" />
...
</p:dialog>
</h:form>
bean 在 viewscope 中:
@ManagedBean(name = "bean")
@ViewScoped
public class MyBean {
private boolean show; // + Getters and Setters
@PostConstruct
public void init() {
this.show = false;
...
}
public void onClose() {
this.show = false;
}
}
而且我可以添加设置 show 参数的 LoginBean 也在 viewScope 中。
谢谢