我以前从未在JSF中创建自定义组件,所以我现在才注意到encodeBegin()
,encodeEnd()
等方法接受FacesContext
参数。
FacesContext
实例通常可以通过FacesContext.getCurrentInstance()
收到。
所以,我想知道这些方法是否只是为了方便FacesContext
参数,或者可以在那里传递一些不同的对象(可能来自外部资源......)。如果后者是可能的,那么你能给出一个例子吗?
答案 0 :(得分:3)
它们可能恰好在不同的线程中运行。 FacesContext#getCurrentIsntance()
只能肯定从HTTP请求执行的线程返回,因为它存储为ThreadLocal
变量。