查找调用托管Bean方法的XHTML页面

4

我有一个管理的Bean,希望根据调用它的页面将其方法内的逻辑分开处理,是否存在一种方法可以实现这个目标?


1
我强烈反对这种方法,因为它混淆了视图和控制器,增加了不必要的复杂性。但如果你非要这么做,你可以通过调用 FacesContext.getCurrentInstance().getExternalContext().getContextName() 来导航 UIView。 - Bob Dalgleish
2个回答

9

这可以通过UIViewRoot#getViewId()实现。

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

我必须说明的是,这有点像一种气味。取决于您认为检查调用XHTML页面将是正确解决方案的具体功能要求,可能会有更好的方法来实现具体的功能需求。


1

我认为有两种方法,第一种是从Http请求中获取referer头,它可能包含请求页面的url。

FacesContext.getCurrentInstance().getExternalContext().getRequestHeaderMap().get("referer")

另一个选项是通过发送参数进行导航,例如在查询字符串中添加viewId作为参数,在jsf-2中,您可以在页面导航时发送参数使用

我希望这能帮助到您


考虑到JSF默认是基于postback的,检查引用者是非常笨拙和不可靠的(客户端可以控制这个值)。只需检查当前视图ID即可。 - BalusC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接