我尝试在我的项目中随处可访问的对话框,我想知道这个解决方案是否可行。
该对话框包含在我的项目模板中。例如,当我在登录页面上时,我想在单击“登录”按钮并且验证成功时显示对话框。所以我抓住了与对话框链接的bean:
getFacesContext()。getELContext()。getELResolver()。getValue(getFacesContext()。getELContext(),null,beanName);
我设置了“show”参数。 (看看下面)
第一次,它正在发挥作用。当我访问登录页面时,不会呈现对话框,当我单击按钮登录时,将设置属性show,页面将更新并显示对话框。但是,如果我关闭它,当我再次点击按钮时,我再也无法触发它。 (对话框已呈现但未显示)
我的对话框是这样的(我有可见=“真”因为我想在每次渲染时显示):
<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在viewcope中:
@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中。
由于