Oracle ADF基于AM的兩種回滾寫法及切換行事件(附代碼) |
發(fā)布時間: 2012/8/31 17:31:50 |
在進行行編輯時,難免會遇到切換行的時候。 則需要有切換行事件,PopUp彈出 確定時提交 取消時回滾。 af:table組件有selectionListener屬性, 默認情況下 都是 selectionListener="#{bindings.[VO名].collectionModel.makeCurrent}" 現(xiàn)在如果需要獲取換行的動作 則要在自己的managebean方法寫此方法 如: selectionListener="#{pageFlowScope.[VO名].tableSelectionListener}" 其中pageFlowScope是我的managebean的生命周期,tableSelectionListener是我定義的 獲取selectionListener的監(jiān)聽方法 1.public void tableSelectionListener(SelectionEvent selectionEvent,ViewObjectImpl vo) throws Exception { GenericTableSelectionHandler.makeCurrent(selectionEvent);寫的位置也很重要 <>如果寫在函數(shù)的最初,則獲取到currentRow為切換后的行,www.linuxidc.com 在此句之前執(zhí)行的currentRow都為切換行之前的currentRow. 代碼中JSFUitls.findComponentInRoot("confirm2")為找到 id為confirm2的組件 UI上是這么寫的: <af:popup autoCancel="enabled" id="afterCommit" animate="default"
確定走makeSureButtonAction,取消走makeNoButtonAction 確定就把am提交。取消則回滾。 介紹兩種回滾方式: 1。數(shù)據(jù)庫回滾,am.getDBTransaction().rollback();通過得到am的dbtransaction的回滾方法 界面上的值也會回滾成數(shù)據(jù)庫的值 2. 同樣是數(shù)據(jù)庫的回滾 am.getDBTransaction().createPreparedStatement("commit", 1).getConnection().rollback(); 與1的區(qū)別為界面上的值是不會回滾成數(shù)據(jù)庫的值的,仍然保留更改過的值 本文出自:億恩科技【mszdt.com】 |