JSF CDI : Conversation scope bean[s] best practice

夙愿已清 提交于 2019-12-18 11:55:25

问题


I'm currently learning about JSF 2.0 and im so glad for the existence of this conversation scope feature, which is very helpful in opening a new tab or a new window on the same page and having separate resources, not overriding one another.

But im curious on how to implement this in a good way, about when to start the conversation and when to close it.

In my case, i have each CDI bean for each JSF page. And let's say that i have a menu, and when it's clicked, this will lead to page A, and from A, could lead to B, B could lead to C, C could lead to D, all these 4 pages are connected in one chain.

Accessing A's bean properties from B or C or D beans is possible, accessing B's properties is also possible from C or D beans and so forth.

Now im quite confused about :

  • whether all these A B C D should be in conversation scope or not, or perhaps just A ? Because i think sometimes from another page that is outside the ABCD chain, like a page F, it could navigate to page B, although i dont know how to supply the data to the bean B yet.
  • whether all these A B C D should be combined into one bean
  • where and when to start the conversation, im thinking about the constructor, but i dont think it's a good idea, because i prefer starting the conversation when first accessing the page, not the bean
  • where and when to stop the conversation, so that there wont be unused resources hanging around

Please share your thoughts on this.


回答1:


JSF 2 provides Request, View, Session, and Application scopes. CDI introduces the Conversation scope, but more importantly, it introduces a standard by which new scopes can be added to the platform.

The Scope you are describing is probably better suited by a custom scope like a window scope. Two projects implementing this scope are:

  1. Apache MyFaces CODI
  2. IceFaces has a JSF (non-CDI) Window scope implementation.

Nevertheless, I would encourage you to rethink your bean structure. I've become quite fond of the View scope myself, coupled with the JSF 2 view parameters to propagate information from one page to another (and from one View scope instance to another).

MyFaces "View Access" scope seems like another neat approach, where a bean stays in scope so long as the pages you navigate through maintain a reference to that scope.



来源:https://stackoverflow.com/questions/4244475/jsf-cdi-conversation-scope-beans-best-practice

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!