我在基于JSF和RF3.3的项目中有以下场景
1.跟踪应用程序中的每个操作。也就是说,如果用户打开某个页面,则会根据用户的名称存储有关页面的信息。
现在页面可以是createSomething或ModifySomething ...... 这两个页面都链接到同一个支持bean,因为它们属于同一个模块。
因此,当我根据构造函数调用跟踪用户的信息时,我无法存储关于是否为createSomething页面或ModifySomething页面加载bean的信息。
我想获取页面的名称或某些独特的东西,我可以使用它来识别是否为CreateSomething或ModifySomething加载了bean。
我想知道如何仅仅访问页面来跟踪或记录信息。用户单击该页面但未执行任何操作。
对于在页面上执行的任何操作,我可以轻松记录它..
我无法使用Javascript ...
请指导我。
答案 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();
}
}