基于JSF中的构造函数调用识别页面加载请求

时间:2012-03-14 12:52:04

标签: jsf jsf-2 constructor

我在基于JSF和RF3.3的项目中有以下场景

1.跟踪应用程序中的每个操作。也就是说,如果用户打开某个页面,则会根据用户的名称存储有关页面的信息。

现在页面可以是createSomething或ModifySomething ...... 这两个页面都链接到同一个支持bean,因为它们属于同一个模块。

因此,当我根据构造函数调用跟踪用户的信息时,我无法存储关于是否为createSomething页面或ModifySomething页面加载bean的信息。

我想获取页面的名称或某些独特的东西,我可以使用它来识别是否为CreateSomething或ModifySomething加载了bean。

我想知道如何仅仅访问页面来跟踪或记录信息。用户单击该页面但未执行任何操作。

对于在页面上执行的任何操作,我可以轻松记录它..

我无法使用Javascript ...

请指导我。

1 个答案:

答案 0 :(得分:0)

您可以通过UIViewRoot#getViewId()获取JSF视图ID,如下所示:

String viewId = FacesContext.getCurrentInstance().getViewRoot().getViewId();
// ...

它将返回视图标识符,该视图标识符是视图根的唯一路径,例如/create.xhtml/edit.xhtml

另一种方法是让页面调用特定于页面的<f:event type="preRenderView">侦听器方法。例如,仅在创建页面中:

<f:event type="preRenderView" listener="#{bean.prepareCreate}" />

public void prepareCreate() {
    if (!FacesContext.getCurrentInstance().isPostback()) {
        entity = new Entity();
    }
}