Oracle ADF:LOV无法在create上工作

时间:2012-05-03 10:23:39

标签: oracle oracle-adf

我有一个带有ListOfValue的ViewObject(VO1),它指向一个ViewObject(VO2),并从VO2中获取记录。 VO2上没有添加ViewCriteria。 在BC测试仪中进行测试时,LOV工作正常。在VO1中编辑行时,以及在VO1中创建行时。

在jspx页面中使用LOV时,LOV在VO1中编辑行时工作正常。但是当我在jspx页面中创建一个新行时,LOV不会获取任何记录。只是一个空列表。 我无法弄清楚出了什么问题,或者为什么它不起作用。我创造了几个LOV,所有的工作都像一个魅力,但这个让我撕裂我的头发。

其他人经历过类似的情况,其中LOV仅在编辑行时起作用? 什么想法可能是错的?

jspx页面上的SOC:

<af:selectOneChoice value="#{row.bindings.IdSosBasGrantType.inputValue}"
label="#{row.bindings.IdSosBasGrantType.label}"
required="#{bindings.SosBasCaseGrantPerCaseType.hints.IdSosBasGrantType.mandatory}"
shortDesc="#{bindings.SosBasCaseGrantPerCaseType.hints.IdSosBasGrantType.tooltip}"
id="soc12" autoSubmit="true">
<f:selectItems value="#{row.bindings.IdSosBasGrantType.items}" id="si11"/>
</af:selectOneChoice>

迭代器绑定:

<tree IterBinding="SosBasCaseGrantPerCaseTypeIterator" id="SosBasCaseGrantPerCaseType">
<nodeDefinition DefName="fo.att.alm.sos.model.bas.views.SosBasCaseGrantVO" Name="SosBasCaseGrantPerCaseType0">
<AttrNames>
<Item Value="Seq"/>
<Item Value="IdSosBasGrantType"/>
<Item Value="IdSosBasGrantVariant"/>
<Item Value="RuleType"/>
<Item Value="Status"/>
<Item Value="IdAplCfgPartyType"/>
</AttrNames>
</nodeDefinition>
</tree>

ViewAttribute:

<ViewAttribute
Name="IdSosBasGrantType"
LOVName="LOV_IdSosBasGrantType"
IsUnique="true"
IsNotNull="true"
PrecisionRule="true"
EntityAttrName="IdSosBasGrantType"
EntityUsage="SosBasCaseGrantEO"
AliasName="ID_SOS_BAS_GRANT_TYPE">
<Properties>
<SchemaBasedProperties>
<CONTROLTYPE
Value="choice"/>
</SchemaBasedProperties>
</Properties>
</ViewAttribute>

ListBinding:

<ListBinding
Name="LOV_IdSosBasGrantType"
ListVOName="SosBasGrantTypeUsgLOV"
ListRangeSize="-1"
NullValueFlag="none"
NullValueId="LOV_IdSosBasGrantType_LOVUIHints_NullValueId"
MRUCount="0">
<AttrArray Name="AttrNames">
<Item Value="IdSosBasGrantType"/>
</AttrArray>
<AttrArray Name="ListAttrNames">
<Item Value="GrantTypeId"/>
</AttrArray>
<AttrArray Name="ListDisplayAttrNames">
<Item Value="ObjectTypeDisplayName"/>
</AttrArray>
<DisplayCriteria/>
</ListBinding>

ViewAccessor

<ViewAccessor
Name="SosBasGrantTypeUsgLOV"
ViewObjectName="fo.att.alm.sos.model.bas.views.SosBasGrantTypeUsgRO"
RowLevelBinds="true"/>

3 个答案:

答案 0 :(得分:0)

在不了解更多代码的情况下难以猜测。 但是如果你有一个创建新记录的情况,LOV显示为空,也许你在两个VO之间定义了一个viewlink。 您需要确保LOV数据来自独立的VO2,而不是VO1的细节。

答案 1 :(得分:0)

我猜是的 1- Lov视图对象VO2具有在两个视图对象之间定义的视图链接 2- Lov视图对象VO2在其sql语句中有参数来过滤从当前视图对象VO1获取其值的数据,并且参数为null,因此它不会返回数据

答案 2 :(得分:0)

尝试打开ADF BC调试,看看当你从页面调用它时,LOV发送给数据库的查询是什么。 编辑项目属性,在“运行/调试”页面中,选择运行配置,然后单击“编辑”。然后将字符串-Djbo.debugoutput = console添加到Java Options字段。

http://docs.oracle.com/cd/E16162_01/web.1112/e16182/web_testdebug.htm#BABDBCGF