我有两个控制器
FirstController
将访问DB并计数(*)以查看有多少消息未读。
SecondController
另一个将打开消息,当它打开时,如果它是未读的,它将标记为已读。
我面临的问题是,当我打开JSF页面时,它首先执行第一个控制器,然后执行第二个控制器。因此,它不会刷新我还有多少未读消息。
是否可以在打开页面时设置执行方法的顺序?
该页面看起来像一个左侧菜单,其中包含未读消息的数量,并且在中间将打开消息。
我该怎么做?
您没有详细说明"JSF如何执行firstcontroller"。这是通过preRenderViewEvent
处理程序,@PostConstuct
方法,还是什么?
从你的问题描述来看,似乎顺序已经是正确的了?你说第一个控制器被执行,这个FirstController
检查未读消息。所以消息正在被"刷新"。但是您说它不刷新未读消息,那么是哪一个呢?
无论如何,单个JSF视图(页面)最好由单个支持bean支持。这个单一的支持bean编排对不同服务(例如EJB bean)的调用,并准备所有需要的数据。然后,视图绑定到这个后台bean,只是为了获取它的数据。
使用此设置,您将不会运行任何执行顺序问题。