如何在首页加载时按页面中列表/表的第一项?

迈克·IT

我对ADF来说还很陌生,并且仍然获得了动手实践的经验。

我只想在用户最初打开JSFF页面时调用一次受管bean方法。该方法绑定到页面上表的SelectionListener上。我需要迭代器可用,因为处理程序会执行一些CRUD操作(下面是方法“ insertNewReturnReason”的代码)。

我已经从Shay Shmeltzer阅读了此链接,并且很好奇我如何可以通过编程方式进行相同的操作。

请告诉我。

谢谢,非常感谢您的帮助。

问候

package com.asrandisheh.mis.asset.viewcontroller;


import javax.faces.event.ActionEvent;

import oracle.adf.model.BindingContext;

import oracle.adf.model.binding.DCIteratorBinding;

import oracle.jbo.Row;

import com.asrandisheh.mis.asset.model.viewobject.AstAssetReturnsVORowImpl;
import com.asrandisheh.mis.asset.viewcontroller.JSFUtils;

import javax.faces.context.FacesContext;

import oracle.adf.model.binding.DCBindingContainer;

import oracle.jbo.server.Entity;

import org.apache.myfaces.trinidad.event.SelectionEvent;
import oracle.binding.BindingContainer;
import oracle.jbo.ViewObject;




import oracle.binding.OperationBinding;

import oracle.jbo.Key;

public class AssetReturn {
    public AssetReturn() {
        super();
    }


    public void insertNewReturnReason(SelectionEvent selectionEvent) {

        // Maintain the makecurrent behavior
        JSFUtils.resolveMethodExpression("#{bindings.AstAssetsVO.collectionModel.makeCurrent}", null, 
                                           new Class[]{SelectionEvent.class}, new Object[]{selectionEvent});        


        // Get the binding context
        BindingContext bctx = BindingContext.getCurrent(); 
        BindingContainer bindings = bctx.getCurrentBindingsEntry();


        // get the current row for AST_ASSET table
        DCIteratorBinding astAssetsVOIterator = (DCIteratorBinding) bindings.get("astAssetsVOIterator");        
        Key parentKey = astAssetsVOIterator.getCurrentRow().getKey();


        //Rollback any previously created row
        OperationBinding ob= bindings.getOperationBinding("Rollback");
        ob.execute();


        //Set again row key as current row
        astAssetsVOIterator.setCurrentRowWithKey(parentKey.toStringFormat(true));


        // get the AstAssetReturnsVOIterator and create a new row with default values        
        DCIteratorBinding astAssetReturnsVOIterator = (DCIteratorBinding) bindings.get("AstAssetReturnsVOIterator");
        ViewObject assetReturnVO = astAssetReturnsVOIterator.getViewObject();
        assetReturnVO.executeEmptyRowSet();

        // pre-set values for ast_asset_return 
        Row assetReturnRow = assetReturnVO.createRow();
        Row assetRow = astAssetsVOIterator.getCurrentRow();                        
        assetReturnRow.setAttribute("AsetId", assetRow.getAttribute("Id"));
        assetReturnRow.setAttribute("AsrtDate", "1395/12/31");
        assetReturnRow.setAttribute("Stat", 0);

        // insert the new row         
        assetReturnVO.insertRow( assetReturnRow );
    }

    public void saveAssetReturn(ActionEvent actionEvent) {
        // Get the bindings
        BindingContext bctx = BindingContext.getCurrent(); 
        BindingContainer bindings = bctx.getCurrentBindingsEntry();


        // get the current row for AST_ASSET table
        DCIteratorBinding astAssetsVOIterator = (DCIteratorBinding) bindings.get("AstAssetsVOIterator");        
        astAssetsVOIterator.getCurrentRow().setAttribute("Status", "Returned");

        OperationBinding ob = bindings.getOperationBinding("Commit");
        ob.execute();
    }

}

编辑:如果我使用方法调用活动作为初始活动,则在尝试访问迭代器的ViewObject时会得到空指针。为了防止万一,我已经标记了该行,提示了空指针异常。

    public void assetReturnInitialization() {    

        // Get the binding context
        BindingContext bctx = BindingContext.getCurrent(); 
        BindingContainer bindings = bctx.getCurrentBindingsEntry();

        // get the current row for AST_ASSET table
        DCIteratorBinding astAssetsVOIterator = (DCIteratorBinding) bindings.get("astAssetsVOIterator");        

        // get the AstAssetReturnsVOIterator and create a new row with default values        
        DCIteratorBinding astAssetReturnsVOIterator = (DCIteratorBinding) bindings.get("AstAssetReturnsVOIterator");
        ViewObject assetReturnVO = astAssetReturnsVOIterator.getViewObject();  // NULL POINTER EXCEPTION OCCURS HERE
        assetReturnVO.executeEmptyRowSet();

        System.out.println("assetReturnInitialization 40");

        // pre-set values for ast_asset_return 
        Row assetReturnRow = assetReturnVO.createRow();
        Row assetRow = astAssetsVOIterator.getCurrentRow();                        

        System.out.println("assetReturnInitialization 50");

        assetReturnRow.setAttribute("AsetId", assetRow.getAttribute("Id"));
        assetReturnRow.setAttribute("AsrtDate", "1395/12/31");
        assetReturnRow.setAttribute("Stat", 0);

        System.out.println("assetReturnInitialization 60");

        // insert the new row         
        assetReturnVO.insertRow( assetReturnRow );

        System.out.println("assetReturnInitialization 20");
    }
迈克·IT

找到了!我需要在方法调用活动的pageDef中添加迭代器。因此,我只需要右键单击MCA,然后转到pageDef并将我需要的迭代器添加到可执行列表中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

加载后如何为下拉列表中的第一项运行LoadPartial函数?

如何在Espresso中单击searchview建议列表中的第一项?

如何在TCL中删除列表中的第一项

如何在python中获取子列表的所有第一项

如何确定 Python 对象列表中的第一项和最后一项?

在Android中加载列表视图时访问列表的第一项

列表中元素的平均值,按列表中的第一项分组

组合框在表单加载事件中选择第一项。如何更改它在表单加载时不选择第一项

如何按条件分组选择第一项?

如何按数组元素的第一项排序?

在实体框架中按子列表的第一项对集合进行排序

显示列表中的唯一第一项

如何在Dart中一次性获得满足条件的列表中的第一项?

如何在单击按钮时显示所有项目并显示列表的第一项以实现jsf中的丰富自动完成功能?

如何在Python 3中没有for循环的情况下访问数组列表中的第一项?

从数据库加载时如何停止自动选择第一项的组合框

如何在加载的第一项上添加className?

从SQL创建的列表中获取第一项

获取列表中的第一项

始终选择列表中的第一项

无法删除链接列表中的第一项

选择每个列表中的第一项

从列表中检索第一项

删除列表中第一项的函数(Python)

display对于MVC中列表的第一项

在 for 循环 Python 中获取列表的第一项

如何提取列表中的第一项(即使列表为空)

PySpark:如何按数组中的第一项进行映射

如何在JPopupMenu中选择第一项?