在Apache Tomcat 7上运行的JSF + REST WebApp

时间:2013-06-20 09:18:36

标签: java spring jsf primefaces tomcat7

我有一个简单的JSF WebApp,其后端服务在Tomcat 7.0.34上运行

如果您有一个JSF ManagedBean负责处理用于呈现UI组件的数据模型,那么后端服务如何通知JSF数据模型的更改?

我基本上试图弄清楚如何从后端服务获取对ApplicationScoped JSF ManagedBeam的引用,但似乎不可能?

我想避免使用轮询meachanism,其中ManagedBean轮询后端服务以检测对数据模型的更改。我尝试使用CDI和Spring IoC,其中尝试已被证明是不成功的。

如果需要,我可以提供示例代码..

由于

2 个答案:

答案 0 :(得分:0)

我会反对这一点。更有意义的是,您的managedbean会为您的服务添加某种侦听器实现,并以这种方式得到通知。在适当的设计中,您的后端服务不知道您的托管bean存在。

如果你仍然想要这样做,那就是让Spring管理你的jsf managedbeans,而不是jsf本身。然后,您可以将(应用程序范围的!)托管bean注入您的服务。

要为bean使用spring,需要将Spring解析器添加到faces-config。

<el-resolver>
  org.springframework.web.jsf.el.SpringBeanFacesELResolver
</el-resolver>

答案 1 :(得分:0)

也许不是你想要的,但你可以在你的数据模型中有一个方法去计算数据模型的哈希值 - 并将该值存储在一个未包含在哈希计算中的表中。

如果数据模型发生更改,则后端的存储过程应更新散列。

虽然您希望避免使用轮询机制,但现在您想知道的值已更改。与@ Joeri的答案类似,您的模型和控制器应该是分离的 - 因为您将来可能有多个控制器。

如果你有一个应用程序范围的bean定期检查哈希 - 它不会给你你需要的东西吗?