我正在使用带有边栏的自定义模板:我有3个可以打开或关闭的分组菜单。我只有在某些页面上才会打开菜单。
我尝试使用NavigationController带有一个属性,该属性让我了解“现在在哪里”,以便我可以打开正确的菜单。
@ManagedBean(eager = true)
@RequestScoped
public class NavigationController implements Serializable {
@ManagedProperty(value = "#{param.pageId}")
private String pageId;
public String showPage() {
switch(pageId) {
case "1": return "home";
case "21": return "cerca_a";
case "22": return "anagrafica?id_p=new&faces-redirect=true";
...
default: return "home";
}
}
//getter and setter
}
像这样在sideBar.xhtml中使用
<ul class="collapse list-unstyled #{navigationController.pageId lt 30? 'show':''}">
<li><h:commandLink action="#{navigationController.showPage}" value="Cerca">
<f:param name="pageId" value="31"/></h:commandLink></li>
...
</ul>
当我使用带参数的链接时(第22种情况),它不起作用:没有打开菜单,它会失去#{navigationController.pageId}。 由于它是 @RequestScoped ,并且我调用anagrafica?id_p = new时,AnagConverter会执行,因此可以肯定会发生。
我应该使用 @ViewScoped 吗?怎么样?有没有更好的方法来维护自定义“面包屑”?
非常感谢!