ICEfaces
  1. ICEfaces
  2. ICE-10771

ace:panelStack PropertyNotFoundException for ice:dataTable rowDataModel

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: EE-3.3.0.GA_P04
    • Fix Version/s: EE-3.3.0.GA_P04
    • Component/s: ICE-Components
    • Labels:
      None
    • Environment:
      jsf2.1

      Description

      use iceMock5 test case located at :-
      smb://iceads1.icesoft.domain/Public/Users/mircea/iceMock-1.0-SNAPSHOT.war
      deploy to tomcat 7
      click on "medium" button and then scroll down to "Do Something" button.
      ul 30, 2015 4:12:18 PM com.sun.faces.lifecycle.ApplyRequestValuesPhase execute
      WARNING: javax.el.PropertyNotFoundException: /WEB-INF/pages/renderers/_renderRelation.xhtml @14,25 value="#{fieldprxy.rowDataModel}": Property 'rowDataModel' not found on type com.ciminc.icemock.FieldProxy
      javax.faces.FacesException: javax.el.PropertyNotFoundException: /WEB-INF/pages/renderers/_renderRelation.xhtml @14,25 value="#{fieldprxy.rowDataModel}": Property 'rowDataModel' not found on type com.ciminc.icemock.FieldProxy
      at com.icesoft.faces.component.panelseries.UISeries.getValue(UISeries.java:66)
      at com.icesoft.faces.component.panelseries.PanelSeries.saveChild(PanelSeries.java:132)
      at org.icefaces.impl.component.UISeriesBase.saveChildState(UISeriesBase.java:772)
      at org.icefaces.impl.component.UISeriesBase.saveChildState(UISeriesBase.java:775)
      at org.icefaces.impl.component.UISeriesBase.saveChildState(UISeriesBase.java:775)
      at org.icefaces.impl.component.UISeriesBase.saveChildState(UISeriesBase.java:775)
      at org.icefaces.impl.component.UISeriesBase.saveChildState(UISeriesBase.java:775)
      at org.icefaces.impl.component.UISeriesBase.saveChildState(UISeriesBase.java:775)
      at org.icefaces.impl.component.UISeriesBase.saveChildState(UISeriesBase.java:775)
      at org.icefaces.impl.component.UISeriesBase.saveChildState(UISeriesBase.java:775)
      at org.icefaces.impl.component.UISeriesBase.saveChildrenState(UISeriesBase.java:766)
      at org.icefaces.impl.component.UISeriesBase.setRowIndex(UISeriesBase.java:123)
      at org.icefaces.impl.component.UISeriesBase.iterate(UISeriesBase.java:619)
      at org.icefaces.impl.component.UISeriesBase.processDecodes(UISeriesBase.java:520)
      at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1178)
      at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1178)
      at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1178)
      at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:925)


      FieldProxySubClass should be the underlying object for that iteration of the panelstack.

      Notice in the FieldProxyGenerator line 74.
                  case 3:
                      fld.setGuiObject(FieldDefinition.GUIObject.RELATIONTABLE);
                      FieldProxySubClass assocFieldProxy = new FieldProxySubClass(fld, null);
                      proxy = assocFieldProxy;
                      break;

      Also If you notice in the _renderRelation.xhtml there is an expression #{fieldprxy.specializedVariable} which you can see renders properly in the display panel. But when you click the buttton you get an exception.

      for markup... see /pages/_renderRelation.xhtml in project.

        Activity

        Hide
        Mircea Toma added a comment - - edited

        I managed to reproduce the problem but only after this exception occurs first when clicking on the "medium" button:

        06-Aug-2015 00:28:47.475 SEVERE [http-nio-8080-exec-21] com.sun.faces.context.AjaxExceptionHandlerImpl.handlePartialResponseError javax.faces.view.facelets.TagAttributeException: /WEB-INF/pages/renderers/_renderRadioGroup.xhtml @17,127 rendered="#{fieldprxy.fieldDef.class.simpleName eq 'EntityFieldDefinition' and fieldprxy.value != null}" Failed to parse the expression [#{fieldprxy.fieldDef.class.simpleName eq 'EntityFieldDefinition' and fieldprxy.value != null}]
        	at com.sun.faces.facelets.tag.TagAttributeImpl.getValueExpression(TagAttributeImpl.java:401)
        	at com.sun.faces.facelets.tag.TagAttributeImpl.getValueExpression(TagAttributeImpl.java:351)
        	at com.sun.faces.facelets.tag.jsf.ComponentRule$ValueExpressionMetadata.applyMetadata(ComponentRule.java:107)
        

        Reloading the page will then trigger the PropertyNotFoundException.

        Show
        Mircea Toma added a comment - - edited I managed to reproduce the problem but only after this exception occurs first when clicking on the "medium" button: 06-Aug-2015 00:28:47.475 SEVERE [http-nio-8080-exec-21] com.sun.faces.context.AjaxExceptionHandlerImpl.handlePartialResponseError javax.faces.view.facelets.TagAttributeException: /WEB-INF/pages/renderers/_renderRadioGroup.xhtml @17,127 rendered= "#{fieldprxy.fieldDef.class.simpleName eq 'EntityFieldDefinition' and fieldprxy.value != null }" Failed to parse the expression [#{fieldprxy.fieldDef.class.simpleName eq 'EntityFieldDefinition' and fieldprxy.value != null }] at com.sun.faces.facelets.tag.TagAttributeImpl.getValueExpression(TagAttributeImpl.java:401) at com.sun.faces.facelets.tag.TagAttributeImpl.getValueExpression(TagAttributeImpl.java:351) at com.sun.faces.facelets.tag.jsf.ComponentRule$ValueExpressionMetadata.applyMetadata(ComponentRule.java:107) Reloading the page will then trigger the PropertyNotFoundException .
        Hide
        Mircea Toma added a comment - - edited

        Modifying ui:fragment EL expression from

        <ui:fragment rendered="#{fieldprxy.fieldDef.class.simpleName eq 'EntityFieldDefinition' and fieldprxy.value != null}">
        

        to

        <ui:fragment rendered="#{fieldprxy.fieldDef['class'].simpleName eq 'EntityFieldDefinition' and fieldprxy.value != null}">
        

        eliminates both exceptions (mentioned in the previous comment).
        It could be that ".class" has some overloaded behaviour, hence the failure to parse the EL expression.

        Show
        Mircea Toma added a comment - - edited Modifying ui:fragment EL expression from <ui:fragment rendered= "#{fieldprxy.fieldDef.class.simpleName eq 'EntityFieldDefinition' and fieldprxy.value != null }" > to <ui:fragment rendered= "#{fieldprxy.fieldDef['class'].simpleName eq 'EntityFieldDefinition' and fieldprxy.value != null }" > eliminates both exceptions (mentioned in the previous comment). It could be that ".class" has some overloaded behaviour, hence the failure to parse the EL expression.
        Hide
        Judy Guglielmin added a comment -

        please see this screen shot for the "Do Something" button on the "medium" page.

        Show
        Judy Guglielmin added a comment - please see this screen shot for the "Do Something" button on the "medium" page.
        Hide
        Judy Guglielmin added a comment -

        This Jira's issue is with the "Do Something" button. The exception is thrown when it is pressed (it is on the "Medium" page).

        Show
        Judy Guglielmin added a comment - This Jira's issue is with the "Do Something" button. The exception is thrown when it is pressed (it is on the "Medium" page).
        Hide
        Mircea Toma added a comment - - edited

        Overridden UIComponent.getFacetsAndChildren method in StackPane to returns the list of facets and children when stack pane rendered to ensure that datable's additional child visiting is blocked.

        Show
        Mircea Toma added a comment - - edited Overridden UIComponent.getFacetsAndChildren method in StackPane to returns the list of facets and children when stack pane rendered to ensure that datable's additional child visiting is blocked.
        Hide
        Judy Guglielmin added a comment -

        see last comment that the actionListener on the "Do Something" button is not getting fired.

        Show
        Judy Guglielmin added a comment - see last comment that the actionListener on the "Do Something" button is not getting fired.
        Hide
        Mircea Toma added a comment - - edited

        Refined the test that decides when to return the list of children. This works around the state saving/restoring run by datable during "apply request values" phase.

        Show
        Mircea Toma added a comment - - edited Refined the test that decides when to return the list of children. This works around the state saving/restoring run by datable during "apply request values" phase.

          People

          • Assignee:
            Mircea Toma
            Reporter:
            Judy Guglielmin
          • Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: