ADF 双击 Table 跳转到另一个视图

双击table中的某行,然后跳转到该行的查看视图。

分别在页面 Table组件中加入 客户端监听和服务监听,加入JS代码,调用BackingBean,执行跳转。

ADF Table 中需要的属性:

页面中Table组件,加粗部分为需要添加的代码。

<af:table value="#{bindings.UserTableView1.collectionModel}"
                              var="row"
                              rows="#{bindings.UserTableView1.rangeSize}"
                              filterVisible="true" varStatus="vs"
                              selectedRowKeys="#{bindings.UserTableView1.collectionModel.selectedRow}"
                              selectionListener="#{bindings.UserTableView1.collectionModel.makeCurrent}"
                              rowSelection="single" id="t1"
                              partialTriggers="::cb3"
                              binding="#{backingBeanScope.staffManageBean.t1}"
                              styleClass="AFStretchWidth"  >
            <af:clientListener method="handleTableDoubleClick" type="dblClick"/>
            <af:serverListener type="TableDoubleClickEvent" method="#{backingBeanScope.staffManageBean.handleTableDoubleClick}"/>

                   
                        <af:column sortProperty="#{bindings.UserTableView1.hints.StaffNo.name}"
                                   filterable="true" sortable="false"
                                   headerText="#{bindings.UserTableView1.hints.StaffNo.label}"
                                   id="c5">
                            <af:outputText value="#{row.StaffNo}" id="ot5"/>
                        </af:column>

....

form组件中加如下JS:

	<af:resource type="javascript" >
		function handleTableDoubleClick(evt){ 
			var table = evt.getSource();
			AdfCustomEvent.queue(table, "TableDoubleClickEvent",{}, true);
			evt.cancel();
		}
	</af:resource>


backingBean中的代码:

	public void handleTableDoubleClick(ClientEvent ce){
	       navToOutCome("toView");//跳转到taskFlow中的 “toView”页面               
               //刷新Psl1为页面第一个组件,上级为改页面Jsff,即刷新Jsff 
               AdfFacesContext.getCurrentInstance().addPartialTarget(this.getPsl1().getParent());
	}
	//跳转方法
	public void navToOutCome(String outCome) {  
	        FacesContext facesContext = FacesContext.getCurrentInstance();  
		Application application = facesContext.getApplication();  
	        NavigationHandler navigationHandler = application.getNavigationHandler();  
			
		ControllerContext controllerContext = ControllerContext.getInstance();  
		String viewId = controllerContext.getCurrentViewPort().getViewId();  
			
		if (viewId != null) {  
		       navigationHandler.handleNavigation(facesContext, viewId, outCome);  
		}  
	}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个使用Python语言编写的简单的ADF仪表程序,代码注释中有详细的解释: ```python import math import random import time # 定义NDB导航台的经纬度坐标 NDB_LATITUDE = 30.0000 NDB_LONGITUDE = 120.0000 # 定义航空器的经纬度坐标和航向角度 AIRCRAFT_LATITUDE = 30.0050 AIRCRAFT_LONGITUDE = 120.0050 AIRCRAFT_HEADING = 45 # 定义ADF仪表的指针角度和显示范围 ADF_POINTER_ANGLE = 0 ADF_DISPLAY_RANGE = 180 # 计算两点之间的距离和方位角 def calculate_distance_and_bearing(lat1, lon1, lat2, lon2): R = 6371 # 地球半径,单位km d_lat = math.radians(lat2 - lat1) d_lon = math.radians(lon2 - lon1) lat1 = math.radians(lat1) lat2 = math.radians(lat2) a = math.sin(d_lat / 2) ** 2 + math.cos(lat1) * math.cos(lat2) * math.sin(d_lon / 2) ** 2 c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a)) distance = R * c # 两点之间的距离,单位km y = math.sin(d_lon) * math.cos(lat2) x = math.cos(lat1) * math.sin(lat2) - math.sin(lat1) * math.cos(lat2) * math.cos(d_lon) bearing = math.degrees(math.atan2(y, x)) # 方位角,单位度 return distance, bearing # 根据航向角度和方位角度计算ADF指针角度 def calculate_adf_pointer_angle(heading, bearing): angle = bearing - heading if angle < 0: angle += 360 return angle # 主程序 def main(): while True: # 随机模拟航向角度的变化 AIRCRAFT_HEADING += random.randint(-5, 5) if AIRCRAFT_HEADING < 0: AIRCRAFT_HEADING += 360 elif AIRCRAFT_HEADING >= 360: AIRCRAFT_HEADING -= 360 # 计算当前位置和NDB导航台的距离和方位角 distance, bearing = calculate_distance_and_bearing(AIRCRAFT_LATITUDE, AIRCRAFT_LONGITUDE, NDB_LATITUDE, NDB_LONGITUDE) # 根据距离和方位角计算ADF指针角度 ADF_POINTER_ANGLE = calculate_adf_pointer_angle(AIRCRAFT_HEADING, bearing) # 输出当前信息 print("Aircraft position: (%.4f, %.4f)" % (AIRCRAFT_LATITUDE, AIRCRAFT_LONGITUDE)) print("Distance to NDB: %.2f km" % distance) print("Bearing to NDB: %.2f degrees" % bearing) print("Aircraft heading: %.2f degrees" % AIRCRAFT_HEADING) print("ADF pointer angle: %.2f degrees" % ADF_POINTER_ANGLE) # 等待一段时间,模拟ADF仪表的刷新速度 time.sleep(1) if __name__ == '__main__': main() ``` 这个程序模拟了一个航空器飞行时的情况,根据航空器的位置和航向角度,计算出航空器到NDB导航台的距离和方位角,然后根据航向角度和方位角度计算ADF指针角度,并输出相关信息。程序还模拟了航向角度的随机变化,以及ADF仪表的刷新速度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值