动态ui:包括

我写了这个问题:
https://stackoverflow.com/questions/8589315/jsf2-dynamic-template

但BalusC和casperOne告诉我写得不好所以我试着更好地解释我的问题。
正如我写的那样,我在这个结构中有我的项目:

  • 在web root 3 xhtml pages:index,include和welcome;
  • 所有其他xhtml页面在子文件夹中进入WEB-INF,称为jsf。

我认为这是一件好事,但是我使用netbeans的向导“从实体类新建JSF页面…”创建所有页面,并且为了在这个向导中使用这个结构,我无法直接链接保存到的xhtml页面jsf forlder,由向导创建,我创建了include.xhtml并修改了重定向到此页面的所有方法,我将在稍后解释,include.xhtml仅包含以下代码:

      Utente connesso:  <br/&gr;    

正如我所说,我修改了所有方法,在LogicBean中调用包含setPageIncluded的action方法,并返回“include.xhtml”,如下所示:
PageController.java:

 public void prepareList() { recreateModel(); LogicBean l = (LogicBean) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("logicBean"); l.action(url+"List.xhtml"); } 

LogicBean.java:

 public String action(String value) { setPageIncluded(value); return "include"; } 

现在这段代码工作得很好,我可以从所有页面导航。
只有一个问题,bean LogicBean存储在会话中!
这意味着如果我试图打开一个新的窗口同时导航项目的不同部分我不能这样做,因为LogicBean只能包含一个pageInclude值!

我试图使用ViewScope但是我不明白它是如何工作的,在这种情况下它没用,或者我错了什么并且它不能正常工作!
有人可以帮助我吗?

我发现这个问题似乎可以帮助我: 动态ui:包含el-expression?
但我不知道它是否可以帮助以及如何修改c:forEach和action方法以便将它用于我的情况!

我希望这次我更好地解释我的问题,如果是这样,我感谢你的帮助!

您使用经过JEE6认证的服务器,因此您可以使用CDI进行bean管理。 有一个名为MyFaces CODI的CDI扩展库,其中包含一个Window作用域包,您可以使用它来限制bean的范围,而不是使用会话作用域。 这将解决您的bean范围问题。

主页 – http://myfaces.apache.org/extensions/cdi/