[KULRICE-12638] Binding path for PrerequisiteConstraints defined in data dictionary wrong on reload Created: 09/May/14  Updated: 24/Sep/14  Resolved: 02/Sep/14

Status: Closed
Project: Kuali Rice Development
Component/s: Data Dictionary, Development
Affects Version/s: 2.3.2, 2.4
Fix Version/s: 2.5
Security Level: Public (Public: Anyone can view)

Type: Bug Fix Priority: Critical
Reporter: Larry Symms Assignee: Jeff Ruch
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Relate
relates to KULRICE-13096 CaseConstraint propertyName updated i... Closed
is related to KULRICE-13096 CaseConstraint propertyName updated i... Closed
Rice Module:
KRAD
KRAD Feature Area:
Data Dictionary
Application Requirement:
KS
Sprint: Core 2.5.0-m7 Sprint 1
KAI Review Status: Not Required
KTI Review Status: Not Required
Code Review Status: Not Required
Include in Release Notes?:
Yes
Story Points: 3

 Description   

Prerequisite constraints defined in a data dictionary are broken when the page (with an input that references the attribute) is reloaded, either by hitting the browser reload button or navigating away and then returning to the page. Not sure if it's relevant or not, but the page in question here is part of a maintenance view.

Here's the specific scenario. In this DD def ...

https://svn.kuali.org/repos/student/enrollment/ks-api/trunk/ks-enroll-api/src/main/resources/ks-CourseInfo-dictionary.xml

... if I modify the CourseInfo.pilotCourse bean like ...

<bean id="CourseInfo.pilotCourse" parent="CourseInfo.pilotCourse-parent"/>
<bean id="CourseInfo.pilotCourse-parent" abstract="true" parent="CourseInfo.pilotCourse-generated">
     <property name="dependencyConstraints">
          <list>
               <bean parent="PrerequisiteConstraint" p:propertyName="courseInfo.endTerm">
                    <property name="messageKey" value="Some key"/>
...

It works as expected the first time the page is loaded, but if the page is reloaded a JS error is generated in krad.utility.js#getAttributeId(elementId). I believe this is because PrerequisiteConstraint#getPropertyAdjustedBindingPath(String propertyPath) prepends the bindingPath to propertyPath on page reload. So, the binding property name gets set to ...

document.newMaintainableObject.dataObject.courseInfo.endTerm
.... then ...
document.newMaintainableObject.dataObject.document.newMaintainableObject.dataObject.courseInfo.endTerm
... etc.

This isn't a problem when the same constraints are configured directly in the input definition.

StR:

  • Add a prerequisite constraint to the DD and reference the attribute from an input field (perhaps on a maintenace doc)
  • Load the page
  • Reload the page either with the refresh button or navigating away from the page and back
    • Expected: The constraint is functional
    • Actual: As JS error is thrown and the page is initialized propertly


 Comments   
Comment by Kristina Taylor (Inactive) [ 08/Aug/14 ]

Larry Symms, is this still occurring? I recall fixing something similar to this bug.

Comment by Glenn Sudduth (Inactive) [ 08/Aug/14 ]

Not sure about this particular issue, but yesterday I was getting a very similar behavior/breakage with a case constraint defined in the DD (w/Rice 2.4.1).
(I'll be doing some additional testing today and will most likely file a bug)

Comment by Larry Symms [ 12/Aug/14 ]

Need to verify this is still happening for this to get attention in 2.5. Option 1 test in ks's rice-upgrade branch. Option 2 pull down rice and try to duplicate.

Comment by Jeff Ruch [ 02/Sep/14 ]

This problem is similar to KULRICE-13096. Both are caused by the bindingPath being applied multiple times.

Comment by Jeff Ruch [ 02/Sep/14 ]

Completed fix and committed. See KULRICE-13096 for details.

Generated at Wed Sep 30 14:02:03 CDT 2020 using JIRA 7.0.11#70121-sha1:19d24976997c1d95f06f3e327e087be0b71f28d4.