oracle.jbo.NoObj异常: JBO-25003: <ObjectName> 找不到数据类型为数据控件的对象



我在尝试在tomcat上运行Oracle ADF时会得到以下异常

oracle.jbo.NoObjException: JBO-25003: Object <ObjectName> of type DataControl is not found.
    at oracle.adf.model.binding.DCIteratorBinding.getCheckedDataControl(DCIteratorBinding.java:2880)
    at oracle.adf.model.binding.DCIteratorBinding.internalGet(DCIteratorBinding.java:5206)
    at oracle.adf.model.binding.DCExecutableBinding.get(DCExecutableBinding.java:119)
    at javax.el.MapELResolver.getValue(MapELResolver.java:62)
    at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
    at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
    at oracle.adf.share.el.VariableResolverELContext$1.getValue(VariableResolverELContext.java:51)
    at org.apache.el.parser.AstValue.getValue(AstValue.java:169)
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)
    at oracle.adf.share.el.OracleExpressionEvaluatorImpl.evaluate(OracleExpressionEvaluatorImpl.java:148)
    at oracle.adf.share.el.OracleExpressionEvaluatorImpl.evaluate(OracleExpressionEvaluatorImpl.java:103)
    at oracle.adf.share.el.OracleExpressionEvaluatorImpl.evaluateHandleNull(OracleExpressionEvaluatorImpl.java:84)
    at oracle.adf.model.binding.DCUtil.elEvaluate(DCUtil.java:847)
    at oracle.adf.model.binding.DCBindingContainer.evaluateParameterWithElCheck(DCBindingContainer.java:1529)
    at oracle.adf.model.binding.DCParameter.internalEvaluateExpresion(DCParameter.java:276)
    at oracle.adf.model.binding.DCParameter.evaluateValue(DCParameter.java:80)
    at oracle.adf.model.binding.DCParameter.getValue(DCParameter.java:115)
    at oracle.adf.model.binding.DCBindingContainer.getChildByName(DCBindingContainer.java:2818)
    at oracle.adf.model.binding.DCBindingContainer.internalGet(DCBindingContainer.java:2870)
    at oracle.adfinternal.view.faces.model.binding.FacesCtrlSearchBinding.internalGet(FacesCtrlSearchBinding.java:5769)
    at oracle.adf.model.binding.DCExecutableBinding.get(DCExecutableBinding.java:119)
    at javax.el.MapELResolver.getValue(MapELResolver.java:62)
    at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
    at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
    at oracle.adf.share.el.VariableResolverELContext$1.getValue(VariableResolverELContext.java:51)
    at org.apache.el.parser.AstValue.getValue(AstValue.java:169)

当我打印BindingContext.keySet()的键时,我会看到找不到的<ObjectName>,但它具有以下名称结构<ObjectName>@<Path_to_databindings>_DataBindings_cpx。任何帮助将不胜感激。

我在使用以下代码编程中找到了此错误的小解决方法;

BindingContext bc = // Load BindingContext
for (Object k:bc.keySet()) {
    if(k.toString().endsWith("@<Path_to_databindings>_DataBindings_cpx")) {
        String newKey = k.toString().substring(0, k.toString().indexOf('@'));
        bc.put(newKey, bc.get(k));
    }
}

相关内容

最新更新