日期:2014-05-16  浏览次数:20320 次

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) {
	      
}
?

?

?

?