将primefaces tabview activeIndex的值传递给一个窗口小部件托管bean

问题描述:

我有一个tabMenu使用菜单项每个菜单项都有一个参数“i”,它链接到activeIndex以指示点击该选项卡时加载哪个页面。将primefaces tabview activeIndex的值传递给一个窗口小部件托管bean

我面临的问题是我需要获取此参数值来调用另一个正在执行操作/处理的小部件。有什么办法可以得到我的这个参数值,并将它传递给我的小部件管理bean(小部件包含一个命令按钮,应该调用小部件管理bean中的方法,并根据所选菜单进行一些处理)。

小部件从tabMenu运行,但仍然与选项卡菜单位于同一页面上。有没有办法做到这一点?

TabMenu是这样的:

<p:tabMenu activeIndex="#{param.i}"> 
     <p:menuitem value="AAA" outcome="/ABC/DEF/123.xhtml"> 
      <f:param name="i" value="0" /> 
     </p:menuitem>... continued similar menuitem for 3 times with values for i 0-3 
</p:tabMenu> 

我的小部件包含一个命令按钮,如下所示:

<h:commandButton outcome="widget" action="#{mbean.callWidgetMethod}" > 
</h:commandButton> 

任何人都可以请指导我?提前致谢。

OK,我找到了答案

在XHTML:

<h:commandButton outcome="widget" action="#{bean.callWidgetMethod}" > 
     <f:param name="i" value="#{param['i']}" /> 
</h:commandButton> 

在Managed Bean:

Map<String,String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap(); 

String param = params.get("i"); 

System.out.println("i = "+param);