2012-05-25 57 views
2

我正在使用JSF 1.2在WAS 7上部署portlet到WebSphere Portal Server 6.1的项目。出于各种合同/政治原因,我们一直坚持JSF 1.2。使用Spring beans在JSF 1.2中模拟jsf 2.0视图范围

但是,我们在整个应用程序中使用Spring bean以获取AoP日志记录。

有些烦人,我们不能使用JSF 2.0。特别是,视图范围将是我们的应用程序的理想选择。这将是一个高用量的网站,并保持会话范围内的所有页面bean是浪费的,我肯定会在稍后引起我们的非功能测试团队的注意。

我想到我可以通过使用Spring的自定义作用域和一个自定义JSF组件来模拟View Scope,该组件仅维护由Spring作用域设置的活动bean映射并将此组件附加到页面上。加上自定义变量解析器可以在这个地图找到豆,我们应该能够仿效视图范围

(我们的旅程只有4页,而且每一页都有几回发到同一页)

这种方法听起来如何?我想确保在向项目同事展示这些内容之前,我不会在某种程度上让自己陷入困境,然后开始拆分我们已经编写的代码。

回答

3

不确定Spring,但对于JSF 1.2托管bean,Tomahawk's<t:saveState>是让JSF 1.2请求作用域bean行为(几乎)与JSF 2.0视图作用域bean完全相同的方式。几乎,因为在JSF 2.x中视图的销毁和状态保存更有效率。但效果最终是一样的。

所有你需要做的是通过标记在视图中的其他地方引用的bean:

<t:saveState value="#{bean}" /> 
+0

这听起来像T:saveState和不正是我提议,但同样,由于政治原因,我们”再次坚持香草JSF :(IBM已告诉我们,他们将“只在门户6.1/7上正式支持vanilla JSF 1.2”,尽管JSF2应该可以工作“ - 我们的管理人员已将这意味着”你只能使用JSF 1.2而不是第三版党的图书馆“) - 但我们在xhtml演示文稿的下一层使用Spring。 –

+0

所以即使没有JSF 1.2组件库?那么,Tomahawk是开源的,你可能想要环顾和/或“借用”''的来源(在弄清了许可问题之后......)。 – BalusC

+0

是的,我会做到这一点,谢谢! –