12 Replies Latest reply: Jan 26, 2012 5:34 AM by Jaber Taslaq RSS

    lov issue

    635362
      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-Oracle
          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
            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-Oracle
              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
                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
                  Gabriel Sideras
                  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
                    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
                      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
                        Gabriel Sideras
                        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-Oracle
                          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
                            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
                              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
                                Jaber Taslaq
                                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 :)