1

我尝试在我的项目中实现一个可随处访问的对话框,我想知道这个解决方案是否可行。

该对话框包含在我的项目模板中。例如,我在登录页面上,我想在单击“登录”按钮并且身份验证成功时显示对话框。所以我抓住了链接到对话框的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 在 vi​​ewscope 中:

@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 中。

谢谢

4

0 回答 0