PrimeFaces 3.0 JSF 开发笔记——tabview

PrimeFaces 3.0 JSF 开发札记——tabview

1. Tab标签的使用

    用法:

   <p:tabView id="tabView" dynamic="true" cache="false">

	<p:ajax event="tabChange"  listener="#manageTableBean.onReportSettingChange}" update="tableList" />
	 <p:tab id="modelTab" title="第一步:模型">content
         </p:tab><p:tab id="modelTab2" title="第二步:模型">content
         </p:tab>
</p:tabView>

  在ManageTableBean中需要 存在onReportSettingChange(TabChangeEvent event)

 

public void onReportSettingChange(TabChangeEvent event) {
	        FacesMessage msg = new FacesMessage("Tab Changed", "Active Tab: " + event.getTab().getClientId());
	        if(event.getTab().getClientId().lastIndexOf("tableTab")>0){
       .............//省略
     }
}

 但是如果在modelTab 中嵌套一个tabView时,在modelTab2和modelTab切换时会导致,

调用内层次嵌套的方法(假如内层的lisener=“#manageTableBean.onReportSettingChange2}”)的

onReportSettingChange2.

 

onReportSettingChange2方法的参数为AjaxBehaviorEvent 的子类TabChangeEvent。

框架会提示找不到方法的异常。解决办法:

内层方法重载一个不同参数的。

代码如下

 

public void onReportSettingChange2(AjaxBehaviorEvent event) {
	        FacesMessage msg = new FacesMessage("Tab Changed", "Active Tab: " + event.getTab().getClientId());
	        if(event.getTab().getClientId().lastIndexOf("tableTab")>0){
       .............//省略
     }
}
public void onReportSettingChange2(TabChangeEvent event) {
	      
}