我正在尝试阻止用户使用phaselistener访问特殊页面。出于这个原因,我试图找出他们试图访问的页面。
但我的问题是,我只能在他们之前的地方得到他们的页面。而不是实际的页面。
public void afterPhase(PhaseEvent event)
{
FacesContext fc = event.getFacesContext();
System.out.println("test1" + fc.getViewRoot().getViewId());
}这里也是一样
public void afterPhase(PhaseEvent event)
{
FacesContext fc = event.getFacesContext();
HttpServletRequest request = (HttpServletRequest) fc.getExternalContext().getRequest();
String uri = request.getRequestURI();
System.out.println("uri: " + uri);
}为什么会这样,以及如何获取用户尝试访问的页面名称?这不是他们之前需要的一个步骤,或者更好的他们来自的页面。
发布于 2012-01-27 18:01:52
它落后了一步,因为这是HTTP POST请求序列的行为方式。当您通过命令按钮在JSF应用程序中导航时,每个请求都作为post请求。
由于您正在保护一些资源,因此要确保通过HTTP GET访问它们,而不是获得确切的视图id,这可以实现为
最后,捕获HTTP GET请求上的视图ids。
希望这能帮到你。
https://stackoverflow.com/questions/9030674
复制相似问题