我对“JSF bean 生命周期操作”的顺序有一个复杂的问题。
我有两个不同范围的bean。第一个,我们称之为会话managerBean
范围bean。第二个,具有视图范围(实际上是许多不同的 bean)。每个页面加载都会执行一些操作,并且很少有其他视图范围 bean 在其构造函数中使用此操作的结果。someBean
someBean
ManagerBean
一切正常,直到我开始从 java bean 获取 xhtml 文件中的表单 ID。现在,在创建之后managerBean
采取行动,并且只有在重新加载页面时我才会得到预期的结果(刷新时,使用第一个工作结果也是如此)。 someBean
someBean
ManagerBean
这是它现在的样子:
<!-- mainTemplate is a main templete of the page which is rendered once
per page view (every other actions are taken via ajax). This is a place
of ManagerBean work after re rendering the page -->
<ui:composition template="/mainTemplate.xhtml">
<ui:define name="mainContent">
<h:form id="#{someBean.formID}">
some inputs
</h:form>
(...)
</ui:define>
</ui:composition>
因此,当表单 id 为常量 String 时,一切都像我想要的那样工作,而现在却不行。看起来 JSF 必须先计算 ID 并在此之后采取任何其他(包括ManagerBean
操作)。
我的问题是:有没有办法改变这种情况?如果有什么不清楚的地方,请询问。我试图简化问题,因为它有很多因素。也许我所有的想法都是错误的(我想在每页采取一些行动以及在它之后采取一些行动的方式)。
任何帮助都会很好!