This discussion is archived
12 Replies Latest reply: Jan 26, 2012 3:34 AM by JaberTaslaq RSS

lov issue

635362 Newbie
Currently Being Moderated
Hi everybody,

i am getting error as below
ADF_FACES-60096:Server Exception during PPR, #2
javax.el.PropertyNotFoundException: Target Unreachable, identifier 'row' resolved to null
     at com.sun.el.parser.AstValue.getTarget(Unknown Source)
     at com.sun.el.parser.AstValue.isReadOnly(Unknown Source)
     at com.sun.el.ValueExpressionImpl.isReadOnly(Unknown Source)

when try select value from select one choice soc1.... when i selected a value from list iam not getting this error.from second time onwards i am getting this error.
Please find below the vo i used industryratingVO in my app
<ViewObject
  xmlns="http://xmlns.oracle.com/bc4j"
  Name="IndustryRatingVO"
  Version="11.1.1.59.23"
  SelectList="IndustryRatingEO.ID_CODE, 
       IndustryRatingEO.PLACE, 
       IndustryRatingEO.RATING_DESC, 
       IndustryRatingEO.RATING_ID, 
       IndustryRatingEO.RATING_SUB_ID"
  FromList="INDUSTRY_RATING IndustryRatingEO"
  BindingStyle="OracleName"
  CustomQuery="false"
  PageIterMode="Full"
  UseGlueCode="false">
  <Properties>
    <SchemaBasedProperties>
      <LABEL
        ResId="model.IndustryRatingVO_LABEL"/>
    </SchemaBasedProperties>
  </Properties>
  <ViewAccessor
    Name="LOV1VO1"
    ViewObjectName="model.LOV1VO"
    RowLevelBinds="true"/>
  <ViewAccessor
    Name="LOV2VO1"
    ViewObjectName="model.LOV2VO">
    <ViewCriteriaUsage
      Name="LOV2VOCriteria"
      FullName="model.LOV2VO.LOV2VOCriteria"/>
    <ParameterMap>
      <PIMap Variable="p_id_code">
        <TransientExpression><![CDATA[RatingId]]></TransientExpression>
      </PIMap>
    </ParameterMap>
  </ViewAccessor>
  <ListBinding
    Name="LOV_RatingId"
    ListVOName="LOV1VO1"
    ListRangeSize="-1"
    NullValueFlag="none"
    NullValueId="LOV_RatingId_LOVUIHints_NullValueId"
    MRUCount="0">
    <AttrArray Name="AttrNames">
      <Item Value="RatingId"/>
    </AttrArray>
    <AttrArray Name="ListAttrNames">
      <Item Value="CodeId"/>
    </AttrArray>
    <AttrArray Name="ListDisplayAttrNames">
      <Item Value="CodeId"/>
    </AttrArray>
    <DisplayCriteria/>
  </ListBinding>
  <ListBinding
    Name="LOV_RatingSubId"
    ListVOName="LOV2VO1"
    ListRangeSize="-1"
    NullValueFlag="none"
    NullValueId="LOV_RatingSubId_LOVUIHints_NullValueId"
    MRUCount="0">
    <AttrArray Name="AttrNames">
      <Item Value="RatingSubId"/>
    </AttrArray>
    <AttrArray Name="ListAttrNames">
      <Item Value="CodeSubId"/>
    </AttrArray>
    <AttrArray Name="ListDisplayAttrNames">
      <Item Value="CodeSubId"/>
      <Item Value="Rating"/>
    </AttrArray>
    <DisplayCriteria/>
  </ListBinding>
  <EntityUsage
    Name="IndustryRatingEO"
    Entity="model.IndustryRatingEO"/>
  <ViewAttribute
    Name="IdCode"
    PrecisionRule="true"
    EntityAttrName="IdCode"
    EntityUsage="IndustryRatingEO"
    AliasName="ID_CODE"/>
  <ViewAttribute
    Name="Place"
    PrecisionRule="true"
    EntityAttrName="Place"
    EntityUsage="IndustryRatingEO"
    AliasName="PLACE"/>
  <ViewAttribute
    Name="RatingDesc"
    PrecisionRule="true"
    EntityAttrName="RatingDesc"
    EntityUsage="IndustryRatingEO"
    AliasName="RATING_DESC"/>
  <ViewAttribute
    Name="RatingId"
    PrecisionRule="true"
    EntityAttrName="RatingId"
    EntityUsage="IndustryRatingEO"
    AliasName="RATING_ID"
    LOVName="LOV_RatingId">
    <Properties>
      <SchemaBasedProperties>
        <CONTROLTYPE
          Value="combo"/>
      </SchemaBasedProperties>
    </Properties>
  </ViewAttribute>
  <ViewAttribute
    Name="RatingSubId"
    PrecisionRule="true"
    EntityAttrName="RatingSubId"
    EntityUsage="IndustryRatingEO"
    AliasName="RATING_SUB_ID"
    LOVName="LOV_RatingSubId">
    <Properties>
      <SchemaBasedProperties>
        <CONTROLTYPE
          Value="combo"/>
      </SchemaBasedProperties>
    </Properties>
  </ViewAttribute>
  <ResourceBundle>
    <PropertiesBundle
      PropertiesFile="model.ModelBundle"/>
  </ResourceBundle>
</ViewObject>
Below is the code i have written
<af:form id="f1">
        <af:table value="#{bindings.IndustryListVO1.collectionModel}" var="row"
                  rows="#{bindings.IndustryListVO1.rangeSize}"
                  emptyText="#{bindings.IndustryListVO1.viewable ? 'No data to display.' : 'Access Denied.'}"
                  fetchSize="#{bindings.IndustryListVO1.rangeSize}"
                  rowBandingInterval="0"
                  filterModel="#{bindings.IndustryListVO1Query.queryDescriptor}"
                  queryListener="#{bindings.IndustryListVO1Query.processQuery}"
                  filterVisible="true" varStatus="vs"
                  selectedRowKeys="#{bindings.IndustryListVO1.collectionModel.selectedRow}"
                  selectionListener="#{bindings.IndustryListVO1.collectionModel.makeCurrent}"
                  rowSelection="single" id="t1" width="389"
                  inlineStyle="height:151px;">
          <af:column sortProperty="IdDesc" filterable="true" sortable="true"
                     headerText="#{bindings.IndustryListVO1.hints.IdDesc.label}"
                     id="c2">
            <af:inputText value="#{row.bindings.IdDesc.inputValue}"
                          label="#{bindings.IndustryListVO1.hints.IdDesc.label}"
                          required="#{bindings.IndustryListVO1.hints.IdDesc.mandatory}"
                          columns="#{bindings.IndustryListVO1.hints.IdDesc.displayWidth}"
                          maximumLength="#{bindings.IndustryListVO1.hints.IdDesc.precision}"
                          shortDesc="#{bindings.IndustryListVO1.hints.IdDesc.tooltip}"
                          id="it2">
              <f:validator binding="#{row.bindings.IdDesc.validator}"/>
            </af:inputText>
          </af:column>
          <af:column sortProperty="IdName" filterable="true" sortable="true"
                     headerText="#{bindings.IndustryListVO1.hints.IdName.label}"
                     id="c3">
            <af:inputText value="#{row.bindings.IdName.inputValue}"
                          label="#{bindings.IndustryListVO1.hints.IdName.label}"
                          required="#{bindings.IndustryListVO1.hints.IdName.mandatory}"
                          columns="#{bindings.IndustryListVO1.hints.IdName.displayWidth}"
                          maximumLength="#{bindings.IndustryListVO1.hints.IdName.precision}"
                          shortDesc="#{bindings.IndustryListVO1.hints.IdName.tooltip}"
                          id="it1">
              <f:validator binding="#{row.bindings.IdName.validator}"/>
            </af:inputText>
          </af:column>
          <af:column sortProperty="IdPlace" filterable="true" sortable="true"
                     headerText="#{bindings.IndustryListVO1.hints.IdPlace.label}"
                     id="c1">
            <af:inputText value="#{row.bindings.IdPlace.inputValue}"
                          label="#{bindings.IndustryListVO1.hints.IdPlace.label}"
                          required="#{bindings.IndustryListVO1.hints.IdPlace.mandatory}"
                          columns="#{bindings.IndustryListVO1.hints.IdPlace.displayWidth}"
                          maximumLength="#{bindings.IndustryListVO1.hints.IdPlace.precision}"
                          shortDesc="#{bindings.IndustryListVO1.hints.IdPlace.tooltip}"
                          id="it3">
              <f:validator binding="#{row.bindings.IdPlace.validator}"/>
            </af:inputText>
          </af:column>
        </af:table>
        <af:table value="#{bindings.IndustryRatingVO1.collectionModel}"
                  var="row" rows="#{bindings.IndustryRatingVO1.rangeSize}"
                  emptyText="#{bindings.IndustryRatingVO1.viewable ? 'No data to display.' : 'Access Denied.'}"
                  fetchSize="#{bindings.IndustryRatingVO1.rangeSize}"
                  rowBandingInterval="0"
                  filterModel="#{bindings.IndustryRatingVO1Query.queryDescriptor}"
                  queryListener="#{bindings.IndustryRatingVO1Query.processQuery}"
                  filterVisible="true" varStatus="vs"
                  selectedRowKeys="#{bindings.IndustryRatingVO1.collectionModel.selectedRow}"
                  selectionListener="#{bindings.IndustryRatingVO1.collectionModel.makeCurrent}"
                  rowSelection="single" id="t2" partialTriggers="::t1">
          <af:column sortProperty="Place" filterable="true" sortable="true"
                     headerText="#{bindings.IndustryRatingVO1.hints.Place.label}"
                     id="c5">
            <af:inputText value="#{row.bindings.Place.inputValue}"
                          label="#{bindings.IndustryRatingVO1.hints.Place.label}"
                          required="#{bindings.IndustryRatingVO1.hints.Place.mandatory}"
                          columns="#{bindings.IndustryRatingVO1.hints.Place.displayWidth}"
                          maximumLength="#{bindings.IndustryRatingVO1.hints.Place.precision}"
                          shortDesc="#{bindings.IndustryRatingVO1.hints.Place.tooltip}"
                          id="it4">
              <f:validator binding="#{row.bindings.Place.validator}"/>
            </af:inputText>
          </af:column>
          <af:column sortProperty="RatingId" filterable="true" sortable="true"
                     headerText="#{bindings.IndustryRatingVO1.hints.RatingId.label}"
                     id="c6">
            <af:selectOneChoice value="#{row.bindings.RatingId.inputValue}"
                                label="#{row.bindings.RatingId.label}"
                                required="#{bindings.IndustryRatingVO1.hints.RatingId.mandatory}"
                                shortDesc="#{bindings.IndustryRatingVO1.hints.RatingId.tooltip}"
                                id="soc1" autoSubmit="true">
              <f:selectItems value="#{row.bindings.RatingId.items}" id="si1"/>
            </af:selectOneChoice>
          </af:column>
          <af:column sortProperty="RatingSubId" filterable="true"
                     sortable="true"
                     headerText="#{bindings.IndustryRatingVO1.hints.RatingSubId.label}"
                     id="c4">
            <af:selectOneChoice value="#{row.bindings.RatingSubId.inputValue}"
                                label="#{row.bindings.RatingSubId.label}"
                                required="#{bindings.IndustryRatingVO1.hints.RatingSubId.mandatory}"
                                shortDesc="#{bindings.IndustryRatingVO1.hints.RatingSubId.tooltip}"
                                id="soc2" partialTriggers="soc1">
              <f:selectItems value="#{row.bindings.RatingSubId.items}"
                             id="si2"/>
            </af:selectOneChoice>
          </af:column>
        </af:table>
      </af:form>
Can you please help me in resolving this error?.i am using jdeveloper version 11.1.1.4.0

Thanks
KM

Edited by: Mr. Murali on Oct 4, 2011 11:04 AM

Edited by: Mr. Murali on Oct 4, 2011 11:05 AM
  • 1. Re: lov issue
    Arunkumar Ramamoorthy Guru
    Currently Being Moderated
    Murali,

    Can you try changing the var to row1 in the second table (and also all the references to it below) and see if it helps?

    -Arun
  • 2. Re: lov issue
    635362 Newbie
    Currently Being Moderated
    Still this problem existsed in my app..the error is same with var row1 as below
    javax.el.PropertyNotFoundException: Target Unreachable, identifier 'row1' resolved to null
    Edited by: Mr. Murali on Oct 4, 2011 10:24 PM
  • 3. Re: lov issue
    Arunkumar Ramamoorthy Guru
    Currently Being Moderated
    Hmm..

    Make sure you have the binding for IndustryRatingVO1 in the pagedef and also check out the nodes of to make sure the RatingId and RatingSubId exist.

    -Arun
  • 4. Re: lov issue
    635362 Newbie
    Currently Being Moderated
    i hope so everything existed as you said..you can also see below code
    <?xml version="1.0" encoding="UTF-8" ?>
    <pageDefinition xmlns="http://xmlns.oracle.com/adfm/uimodel"
                    version="11.1.1.59.23" id="IndustryPageDef"
                    Package="mfpa.view.pageDefs">
      <parameters/>
      <executables>
        <variableIterator id="variables"/>
        <iterator Binds="IndustryListVO1" RangeSize="25"
                  DataControl="AppModuleDataControl" id="IndustryListVO1Iterator"/>
        <searchRegion Binds="IndustryListVO1Iterator" Criteria=""
                      Customizer="oracle.jbo.uicli.binding.JUSearchBindingCustomizer"
                      id="IndustryListVO1Query"/>
        <iterator Binds="IndustryRatingVO1" RangeSize="25"
                  DataControl="AppModuleDataControl"
                  id="IndustryRatingVO1Iterator"/>
        <searchRegion Binds="IndustryRatingVO1Iterator" Criteria=""
                      Customizer="oracle.jbo.uicli.binding.JUSearchBindingCustomizer"
                      id="IndustryRatingVO1Query"/>
      </executables>
      <bindings>
        <tree IterBinding="IndustryListVO1Iterator" id="IndustryListVO1">
          <nodeDefinition DefName="mfpa.model.IndustryListVO"
                          Name="IndustryListVO10">
            <AttrNames>
              <Item Value="IdDesc"/>
              <Item Value="IdName"/>
              <Item Value="IdPlace"/>
            </AttrNames>
          </nodeDefinition>
        </tree>
        <tree IterBinding="IndustryRatingVO1Iterator" id="IndustryRatingVO1">
          <nodeDefinition DefName="mfpa.model.IndustryRatingVO"
                          Name="IndustryRatingVO10">
            <AttrNames>
              <Item Value="Place"/>
              <Item Value="RatingId"/>
              <Item Value="RatingSubId"/>
            </AttrNames>
          </nodeDefinition>
        </tree>
        <listOfValues StaticList="false" IterBinding="IndustryRatingVO1Iterator"
                      Uses="LOV_RatingId" id="RatingId"/>
        <listOfValues StaticList="false" IterBinding="IndustryRatingVO1Iterator"
                      Uses="LOV_RatingSubId" id="RatingSubId"/>
        <listOfValues StaticList="false" IterBinding="IndustryRatingVO1Iterator"
                      Uses="LOV_ViewAttr" id="ViewAttr"/>
      </bindings>
    </pageDefinition>
    for this view IndustryRatingVO1 i want to two more attributes which are transiant and caculated values i will get from database package.
    i want to show the calculated values from database for these attributes in my jsf page.
    i tried using groovy...but i have to call the db again for second time to display second value.
    is there any best way where i want to call the db package only for one row.?

    Edited by: Mr. Murali on Oct 4, 2011 11:22 PM
  • 5. Re: lov issue
    GabrielSideras Pro
    Currently Being Moderated
    Hi,

    Is the choice list that produces the error mapped to the primary key of the view object?

    We faced a similar problem when attempting to update the primary key of a record in a table. To work around this we used a surrogate key.
    We added a column in the database table coming from a sequence and used that as a primary key instead.

    I don't know if there is a better way to do this.

    Gabriel.
  • 6. Re: lov issue
    635362 Newbie
    Currently Being Moderated
    this is not possible in my case.
    because db table is already existed with unqiue key and millions of rows.so i cant assign a db sequence to this value.
    is there any other way to do this?

    and i have 3 calcualted values(which are coming from db package procedure) for this table which i have to show when the table is populated.
    can you suggest any best to show this values in table?

    any help please?

    thanks
    KM

    Edited by: Mr. Murali on Oct 5, 2011 1:15 AM
  • 7. Re: lov issue
    635362 Newbie
    Currently Being Moderated
    i have another question.
    how safe is it tp use rowid as primary key for master detail as said in above case?
    will i get any problems using this rowid as primarykey
  • 8. Re: lov issue
    GabrielSideras Pro
    Currently Being Moderated
    Hi,

    You could try the rowId to resolve your issue without using a surrogate key I have not tried it so I dont know if issues could occur.

    As for your other question to retrieve values from function calls you can add it directly to your select statement:
    Select attr1,
    .,
    .,
    ( PackageName.FunctionName(param1,param2...)) AS Attribute, 
    I do not know if there is a better way for this.

    Gabriel.
  • 9. Re: lov issue
    Jobinesh Pro
    Currently Being Moderated
    Ideally, your model should not RowId as PK as it doesn't represent any business data - However technically it should work
  • 10. Re: lov issue
    635362 Newbie
    Currently Being Moderated
    Hi Gabriel,

    i treid using rowid as primary key for the both master and detail tables.its working fine.LOV issue is resolved.

    But when create insert or create on detail table industryratingvo1-- its giving error
    Detail entity IndustryRatinEO with row key oracle.jbo.Key[394408 ] cannot find or invalidate its owning entity.
    one small question - if entity is already existed and then how to add rowid as primary key to entity object?
    thanks
    KM

    Edited by: Mr. Murali on Oct 5, 2011 5:27 AM
  • 11. Re: lov issue
    635362 Newbie
    Currently Being Moderated
    Can you please share is there any other way we can resolve this issue by keeping primary key's?


    thanks
    KM
  • 12. Re: lov issue
    JaberTaslaq Newbie
    Currently Being Moderated
    Dear
    we solved this problem by adding an id column as a sequence and PK, the old composite PK, we modify it as a UK, that's will solve your problem
    get your me feed back :)

Legend

  • Correct Answers - 10 points
  • Helpful Answers - 5 points