Kuali Rice Development
  1. Kuali Rice Development
  2. KULRICE-13896

EditWithDialog fails when collection item contains render flag

    Details

    • Type: Bug Fix Bug Fix
    • Status: Open Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: 2.5
    • Fix Version/s: 2.6
    • Component/s: Development
    • Security Level: Public (Public: Anyone can view)
    • Labels:
    • Similar issues:
      KULRICE-9044KRAD "stacked" collection elements are not rendering add/delete buttons
      KULRICE-12670Input field not rendering on collection add line item
      KULRICE-12791AddWithDialog does not contain any items
      KULRICE-10048row css does not move with collection items on sort when CollectionGroup.useServerPaging=true
      KULRICE-13898EditWithDialog with custom dialog removes anything not a datafield or collectiongroup
      KULRICE-8099collections items need to be separated from the subcollection group
      KULRICE-12915Expressions not evaluated in collection group items
      KULRICE-9603Ajax request for table detail content fails the second time when the detail contains a nested placeholder
      KULRICE-9607When content is retrieved that contains a nested collection group binding is not adjusted correctly
      KULRICE-7532required validation fails in StackedCollectionSubSection addLine
    • Rice Module:
      KRAD
    • Application Requirement:
      KC
    • KAI Review Status:
      Not Required
    • KTI Review Status:
      Not Required
    • Code Review Status:
      Not Required
    • Include in Release Notes?:
      Yes
    • Story Points:
      8

      Description

      When using collection's new editWithDialog feature, the following stack trace is generated when one of the collectionGroup's items contains a render flag, like p:render="@

      {#isAddLine}".
      2014-10-03 11:57:32,520 [http-bio-8080-exec-9] u:quickstart/d: ERROR org.kuali.rice.krad.web.controller.UifHandlerExceptionResolver - Error getting property 'currentPage.items[0].layoutManager.allRowFields[11].group.items[2]' from org.kuali.rice.krad.uif.view.FormView@73399a12
      java.lang.IllegalArgumentException: Error getting property 'currentPage.items[0].layoutManager.allRowFields[11].group.items[2]' from org.kuali.rice.krad.uif.view.FormView@73399a12
      	at org.kuali.rice.krad.uif.util.ObjectPropertyUtils.getPropertyValue(ObjectPropertyUtils.java:329)
      	at org.kuali.rice.krad.uif.lifecycle.ViewLifecycle.performComponentLifecycle(ViewLifecycle.java:252)
      	at org.kuali.rice.krad.web.service.impl.ModelAndViewServiceImpl.invokeViewLifecycle(ModelAndViewServiceImpl.java:289)
      	at org.kuali.rice.krad.web.service.impl.ModelAndViewServiceImpl.prepareView(ModelAndViewServiceImpl.java:263)
      	at org.kuali.rice.krad.web.controller.UifControllerHandlerInterceptor.postHandle(UifControllerHandlerInterceptor.java:188)
      	at org.springframework.web.servlet.HandlerExecutionChain.applyPostHandle(HandlerExecutionChain.java:149)
      	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:928)
      	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:851)
      	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:953)
      	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:855)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
      	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      	at org.kuali.rice.kew.web.UserPreferencesFilter.doFilter(UserPreferencesFilter.java:78)
      	at org.kuali.rice.kew.web.UserPreferencesFilter.doFilter(UserPreferencesFilter.java:62)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      	at org.kuali.rice.krad.web.filter.UserLoginFilter.doFilter(UserLoginFilter.java:89)
      	at org.kuali.rice.krad.web.filter.UserLoginFilter.doFilter(UserLoginFilter.java:77)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      	at org.kuali.rice.krad.web.filter.BootstrapFilterChain.doFilter(BootstrapFilter.java:327)
      	at org.kuali.rice.krad.web.filter.DummyLoginFilter.doFilter(DummyLoginFilter.java:82)
      	at org.kuali.rice.krad.web.filter.DummyLoginFilter.doFilter(DummyLoginFilter.java:62)
      	at org.kuali.rice.krad.web.filter.BootstrapFilterChain.doFilter(BootstrapFilter.java:320)
      	at org.kuali.rice.krad.web.filter.BootstrapFilter.doFilter(BootstrapFilter.java:199)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      	at org.kuali.coeus.sys.framework.controller.interceptor.PerformanceLoggingFilter.doFilter(PerformanceLoggingFilter.java:63)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      	at org.kuali.coeus.sys.framework.controller.interceptor.SessionExpiredFilter.doFilter(SessionExpiredFilter.java:40)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      	at org.kuali.rice.krad.web.filter.HideWebInfFilter.doFilter(HideWebInfFilter.java:68)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      	at org.springframework.web.filter.AbstractRequestLoggingFilter.doFilterInternal(AbstractRequestLoggingFilter.java:214)
      	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:106)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
      	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
      	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
      	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
      	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
      	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
      	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:409)
      	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1044)
      	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
      	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      	at java.lang.Thread.run(Thread.java:744)
      Caused by: java.lang.RuntimeException: Class to retrieve property from was null
      	at org.kuali.rice.krad.uif.util.ObjectPropertyUtils$ObjectPropertyMetadata.<init>(ObjectPropertyUtils.java:1127)
      	at org.kuali.rice.krad.uif.util.ObjectPropertyUtils$ObjectPropertyMetadata.<init>(ObjectPropertyUtils.java:979)
      	at org.kuali.rice.krad.uif.util.ObjectPropertyUtils.getMetadata(ObjectPropertyUtils.java:966)
      	at org.kuali.rice.krad.uif.util.ObjectPropertyUtils.getReadMethod(ObjectPropertyUtils.java:153)
      	at org.kuali.rice.krad.uif.util.ObjectPropertyReference$ReferencePathEntry.parse(ObjectPropertyReference.java:141)
      	at org.kuali.rice.krad.uif.util.ObjectPathExpressionParser$ParseState.step(ObjectPathExpressionParser.java:211)
      	at org.kuali.rice.krad.uif.util.ObjectPathExpressionParser$ParseState.access$600(ObjectPathExpressionParser.java:57)
      	at org.kuali.rice.krad.uif.util.ObjectPathExpressionParser.parsePathExpression(ObjectPathExpressionParser.java:361)
      	at org.kuali.rice.krad.uif.util.ObjectPropertyReference.resolvePath(ObjectPropertyReference.java:365)
      	at org.kuali.rice.krad.uif.util.ObjectPropertyUtils.getPropertyValue(ObjectPropertyUtils.java:326)
      	... 55 more
      


      And code in KC that generated error
      
      

      <bean id="PropBudget-SubawardsPage" parent="PropBudget-SubawardsPage-parentBean" />
      <bean id="PropBudget-SubawardsPage-parentBean" parent="PropBudget-Page">
      <property name="items">
      <list>
      <ref bean="PropBudget-SubawardsPage-CollectionGroup" />
      </list>
      </property>
      <property name="header">
      <bean parent="Uif-PageHeader" />
      </property>

      </bean>

      <bean id="PropBudget-SubawardsPage-CollectionGroup"
      parent="PropBudget-SubawardsPage-CollectionGroup-parentBean" />
      <bean id="PropBudget-SubawardsPage-CollectionGroup-parentBean"
      parent="Uif-TableCollectionSection" abstract="true" p:headerText="Subawards"
      p:propertyName="budget.budgetSubAwards"
      p:collectionObjectClass="org.kuali.coeus.propdev.impl.budget.subaward.BudgetSubAwards"
      p:addWithDialog="true" p:layoutManager.renderSequenceField="false"
      p:editWithDialog="true" p:customEditLineDialog="true">
      <property name="editLineDialogPrototype">
      <bean parent="PropBudget-Subawards-Details-Section"/>
      </property>
      <property name="layoutManager.richTable.templateOptions">
      <map>
      <entry key="sDom" value="tip" />
      <entry key="bRetrieve" value="true" />
      <entry key="bPaginate" value="false" />
      <entry key="bInfo" value="false" />
      </map>
      </property>
      <property name="addWithDialogAction">
      <bean parent="Uif-AddWithDialogAction" p:actionLabel="Add Subaward" p:cssClasses="pull-right" p:iconClass="icon-plus"/>
      </property>
      <property name="addLineDialog">
      <bean id="PropBudget-SubawardsPage-CollectionGroup-AddDialog" parent="Uif-AddLineDialog" p:headerText="Add Subaward">
      <property name="footer.items">
      <list>
      <bean parent="Uif-DialogDismissButton" p:actionLabel="Cancel"/>
      <bean parent="Uif-AddLineAction-Dialog" p:actionLabel="Add Subaward" p:dialogDismissOption=""
      p:successCallback="Kc.PropDev.Budget.closeDialogWithoutError('PropBudget-SubawardsPage-CollectionGroup-AddDialog');"/>
      </list>
      </property>
      </bean>
      </property>
      <property name="header.lowerGroup">
      <bean parent="Uif-HeaderLowerGroup">
      <property name="items">
      <list>
      <bean parent="Uif-Message"
      p:messageText="Upload a pre-formatted budget document for a subawardee organization or enter details manually."
      p:order="10" />
      </list>
      </property>
      </bean>
      </property>
      <property name="items">
      <list>
      <bean parent="Uif-InputField" p:propertyName="organizationId"
      p:order="10" p:readOnly="@{!#isAddLine}" p:propertyNamesForAdditionalDisplay="organization.organizationName"
      p:readOnlyDisplayReplacement="@{#fp.organization?.organizationName} (@{#fp.organizationId})"/>
      <bean parent="Uif-InputField" p:propertyName="subAwardXfdFileName" p:label="File Name"
      p:order="20" p:render="@{!#isAddLine}" p:readOnly="true"/>
      <bean parent="Uif-InputField" p:propertyName="newSubAwardFile" p:label="File Name"
      p:order="30" p:render="@{#isAddLine}

      ">
      <property name="control">
      <bean parent="Uif-FileControl"/>
      </property>
      </bean>
      <bean parent="Uif-InputField" p:propertyName="comments" p:order="40" p:render="@

      {#isAddLine}

      "/>
      </list>
      </property>
      <property name="lineActions">
      <list>
      <bean parent="Uif-DeleteLineAction-IconOnly" p:order="40"
      p:iconClass="icon-trash" />
      </list>
      </property>
      </bean>

      <bean id="PropBudget-Subawards-Details-Section" parent="PropBudget-Subawards-Details-Section-parent" />
      <bean id="PropBudget-Subawards-Details-Section-parent"
      parent="Uif-DialogGroup" p:headerText="Add Subaward">
      <property name="items">
      <list>
      <bean parent="PropBudget-SubawardsAttachments-Buttons-Section" p:order="10" />
      <bean parent="PropBudget-SubawardsAttachments-Details-Section" p:order="20" />
      </list>
      </property>
      <property name="footer.items">
      <list>
      <bean parent="Uif-PrimaryActionButton" p:actionLabel="Save Changes" p:order="10" />
      <bean parent="Uif-DialogDismissButton" p:actionLabel="Cancel" p:order="20" />
      </list>
      </property>
      </bean>

      <bean id="PropBudget-SubawardsAttachments-Buttons-Section"
      parent="PropBudget-SubawardsAttachments-Buttons-Section-parent" />
      <bean id="PropBudget-SubawardsAttachments-Buttons-Section-parent"
      parent="Uif-HorizontalFieldGroup" p:label="Attachment Details">
      <property name="items">
      <list>
      <bean p:actionLabel="View PDF" parent="Uif-SecondaryActionButton-Small"
      p:style="float: right;" p:order="10" />
      <bean p:actionLabel="View XML" parent="Uif-SecondaryActionButton-Small"
      p:style="float: right;" p:order="20" />
      <bean p:actionLabel="Sync from PDF" parent="Uif-SecondaryActionButton-Small"
      p:style="float: right;" p:order="30" />
      <bean p:actionLabel="Replace" parent="Uif-SecondaryActionButton-Small"
      p:style="float: right;" p:order="40" />
      <bean p:actionLabel="Delete" parent="Uif-SecondaryActionButton-Small"
      p:style="float: right;" p:order="50" />
      </list>
      </property>
      </bean>

      <bean id="PropBudget-SubawardsAttachments-Details-Section"
      parent="PropBudget-SubawardsAttachments-Details-Section-parent" />
      <bean id="PropBudget-SubawardsAttachments-Details-Section-parent"
      parent="Uif-HorizontalBoxGroup">
      <property name="items">
      <list>
      <bean parent="PropBudget-SubawardsAttachments-Subdetails-Section" p:order="10" />
      <bean parent="Uif-InputField" p:propertyName="comments" p:order="20"/>
      <bean p:actionLabel="Edit Comments" parent="Uif-SecondaryActionButton-Mini" p:order="30" p:style="float: left;" />
      <bean parent="PropBudget-SubawardsAttachments-Details-CollectionGroup" p:order="40" />
      </list>
      </property>
      </bean>

      <bean id="PropBudget-SubawardsAttachments-Subdetails-Section"
      parent="PropBudget-SubawardsAttachments-Subdetails-Section-parent" />
      <bean id="PropBudget-SubawardsAttachments-Subdetails-Section-parent"
      parent="Uif-CssGridSubSection-2FieldLabelColumn">
      <property name="items">
      <list>
      <bean parent="Uif-InputField" p:propertyName="organizationName" p:order="10"/>
      <bean parent="Uif-InputField" p:propertyName="formName" p:order="20"/>
      <bean parent="Uif-InputField" p:propertyName="subAwardXfdFileName" p:order="30"/>
      <bean parent="Uif-InputField" p:propertyName="budgetSubAwardAttachments"
      p:label="Attachments" p:order="40"/>
      <bean parent="Uif-InputField" p:propertyName="xfdUpdateTimestamp" p:order="50" />
      <bean parent="Uif-InputField" p:propertyName="xmlUpdateTimestamp" p:order="60" />
      <bean parent="Uif-InputField" p:propertyName="subAwardStatusCode" p:order="70" />
      <bean parent="Uif-InputField" p:propertyName="namespace" p:order="80" />
      </list>
      </property>
      </bean>

      <bean id="PropBudget-SubawardsAttachments-Details-CollectionGroup"
      parent="PropBudget-SubawardsAttachments-Details-CollectionGroup-parentBean" />
      <bean id="PropBudget-SubawardsAttachments-Details-CollectionGroup-parentBean"
      parent="Uif-TableCollectionSection" abstract="true" p:headerText="Details"
      p:propertyName="newBudgetSubaward"
      p:collectionObjectClass="org.kuali.coeus.propdev.impl.budget.subaward.BudgetSubAwards"
      p:addWithDialog="false" p:layoutManager.renderSequenceField="false"
      p:renderLineActions="false">
      <property name="layoutManager.richTable.templateOptions">
      <map>
      <entry key="sDom" value="tip" />
      <entry key="bRetrieve" value="true" />
      <entry key="bPaginate" value="false" />
      <entry key="bInfo" value="false" />
      </map>
      </property>
      <property name="items">
      <list>
      <bean parent="Uif-InputField" p:propertyName="totalDirectCost"
      p:order="10"/>
      <bean parent="Uif-InputField" p:propertyName="totalIndirectCost"
      p:order="20"/>
      <bean parent="Uif-InputField" p:propertyName="costSharingAmount"
      p:order="30"/>
      <bean parent="Uif-InputField" p:propertyName="totalCost"
      p:label="Total Cost" p:order="40"/>
      </list>
      </property>
      </bean>

      
      

        Activity

        Hide
        Brian Smith (Inactive) added a comment - - edited

        This is caused by rendering differing between add and table lines
        Recommendations:
        the fields should not be taken into account at all for custom dialogs being shown
        and it shouldn't blow up for a normal edit if some columns are not rendered for every line

        So it needs to work in the following cases:
        There is a column that is not rendered
        There is a field that is not rendered in an add line dialog/group but is rendered for all lines

        Throw exception when column count differs for lines that are part of the table

        Show
        Brian Smith (Inactive) added a comment - - edited This is caused by rendering differing between add and table lines Recommendations: the fields should not be taken into account at all for custom dialogs being shown and it shouldn't blow up for a normal edit if some columns are not rendered for every line So it needs to work in the following cases: There is a column that is not rendered There is a field that is not rendered in an add line dialog/group but is rendered for all lines Throw exception when column count differs for lines that are part of the table

          People

          • Assignee:
            Unassigned
            Reporter:
            Douglas Pace
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:

              Structure Helper Panel