Author: jleroux Date: Tue Mar 4 10:37:01 2014 New Revision: 1574019 URL: http://svn.apache.org/r1574019 Log: A patch from Leila Mekika for "Problems in single form when use-when and position are used together" https://issues.apache.org/jira/browse/OFBIZ-5552
The service "renderSingleFormString" check the previous field position to see if the current field must be displayed after the previous field or on a new line. When the previous field has a use-when condition that is not valid, it remains as the currentFormField and the next field is compared with this "not rendered" field. If the position of this previous field is the same as the current field, the current is displayed on the next line. To reproduce, add in a single form the three fields below : <field position="1" name="first"><display description="first"/></field> <field position="2" name="second" use-when="true"><display description="second"/></field> <field position="2" name="second" use-when="false"><display description="second"/></field> The field second is rendered on a new line jleroux: this second version works correctly Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java?rev=1574019&r1=1574018&r2=1574019&view=diff ============================================================================== --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java (original) +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java Tue Mar 4 10:37:01 2014 @@ -1062,6 +1062,9 @@ public class ModelForm extends ModelWidg } //Debug.logInfo("In single form evaluating use-when for field " + currentFormField.getName() + ": " + currentFormField.getUseWhen(), module); if (!currentFormField.shouldUse(context)) { + if (UtilValidate.isNotEmpty(lastFormField)) { + currentFormField = lastFormField; + } continue; } alreadyRendered.add(currentFormField.getName());