ADF之ADFUtils.getApplicationModuleForDataControl("AppModuleDataControl")

在ADF开发的过程中,我们通常在view层的bean中调用model层的AppModule中的方法.

那首先我们需要得到AppModule.

我们通常会用到ADFUtils, JSFUtils这两个工具包.

我们知道ADF框架很多都是基于元数据来进行配置的.

那么经常就会通过解析el表达式来获取相应的值.

在ADFUtils中的getApplicationModuleForDataControl(String name)方法中.

    public static ApplicationModule getApplicationModuleForDataControl(String name) {
        return (ApplicationModule)JSFUtils.resolveExpression("#{data." + name + ".dataProvider}");
    }

在找到JSFUtils里的解析表达式的方法去看到.

    public static Object resolveExpression(String expression) {
        FacesContext facesContext = getFacesContext();
        Application app = facesContext.getApplication();
        ExpressionFactory elFactory = app.getExpressionFactory();
        ELContext elContext = facesContext.getELContext();
        ValueExpression valueExp = elFactory.createValueExpression(elContext, expression, Object.class);
        return valueExp.getValue(elContext);
    }
通过上面的方法体.我们可以理解为取得各种值的方法其实就是去解析el表达式.

然后通过容器查找,返回我们想要的值.


那么我们在调用ADFUtils.getApplicationModuleForDataControl("AppModuleDataControl")的方法的时候.

这里的参数字符串AppModuleDataControl是怎么确定的呢?

我们都知道在我们在拖动一个model层的数据到页面来的时候.model层的数据就能显示到页面上,那么这些是靠什么联系起来的呢?

这就要注意到在view层我们有一个DataBindings.cpx文件了.这个文件就是负责记录各个页面和页面的定义文件之间的映射以及mdel层AppModule用的

这里我们叫作AppModule的注册吧.

当我们要去用ADFUtils.getApplicationModuleForDataControl("AppModuleDataControl")的时候,一定要确保AppModuleDataControl在DataBindings.cpx文件里进行注册.

否则就取不到AppModule的实例.


以上仅仅是个人的理解和看法, 如有误,请帮忙指出.本人十分感谢.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值