I am trying to update the patch attached to this JIRA
https://issues.apache.org/jira/browse/OFBIZ-4021 to compile againg after
this change.
I am wondering if I could use the new mainFieldList David has introduced
here but I have not well understood what the group-columns stuff does.
Could anyone please give a look to the patch attached in the JIRA?
I think it could be a good improvement to the form widget.

Thank you,
Bruno

2010/11/20 <jone...@apache.org>

> Author: jonesde
> Date: Sat Nov 20 09:32:30 2010
> New Revision: 1037146
>
> URL: http://svn.apache.org/viewvc?rev=1037146&view=rev
> Log:
> Added new group-columns attribute to form element to not group input/other
> columns if not desired, defaults to true which is the old/original behavior
>
> Modified:
>    ofbiz/trunk/framework/widget/dtd/widget-form.xsd
>    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java
>
> Modified: ofbiz/trunk/framework/widget/dtd/widget-form.xsd
> URL:
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-form.xsd?rev=1037146&r1=1037145&r2=1037146&view=diff
>
> ==============================================================================
> --- ofbiz/trunk/framework/widget/dtd/widget-form.xsd (original)
> +++ ofbiz/trunk/framework/widget/dtd/widget-form.xsd Sat Nov 20 09:32:30
> 2010
> @@ -155,6 +155,14 @@ under the License.
>                 </xs:restriction>
>             </xs:simpleType>
>         </xs:attribute>
> +        <xs:attribute name="group-columns" default="true">
> +            <xs:simpleType>
> +                <xs:restriction base="xs:token">
> +                    <xs:enumeration value="true"/>
> +                    <xs:enumeration value="false"/>
> +                </xs:restriction>
> +            </xs:simpleType>
> +        </xs:attribute>
>         <xs:attribute type="xs:integer" name="view-size">
>             <xs:annotation><xs:documentation>The number of items to display
> per page</xs:documentation></xs:annotation>
>         </xs:attribute>
>
> 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=1037146&r1=1037145&r2=1037146&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
> Sat Nov 20 09:32:30 2010
> @@ -112,6 +112,7 @@ public class ModelForm extends ModelWidg
>     protected String paginateTargetAnchor;
>     protected String paginateStyle;
>     protected boolean separateColumns = false;
> +    protected boolean groupColumns = true;
>     protected boolean useRowSubmit = false;
>     protected FlexibleStringExpander targetWindowExdr;
>     protected String defaultRequiredFieldStyle;
> @@ -285,6 +286,7 @@ public class ModelForm extends ModelWidg
>                 this.defaultTooltipStyle = parent.defaultTooltipStyle;
>                 this.itemIndexSeparator = parent.itemIndexSeparator;
>                 this.separateColumns = parent.separateColumns;
> +                this.groupColumns = parent.groupColumns;
>                 this.targetType = parent.targetType;
>                 this.defaultMapName = parent.defaultMapName;
>                 this.targetWindowExdr = parent.targetWindowExdr;
> @@ -460,6 +462,11 @@ public class ModelForm extends ModelWidg
>             if (sepColumns != null && sepColumns.equalsIgnoreCase("true"))
>                 separateColumns = true;
>         }
> +        if (formElement.hasAttribute("group-columns")) {
> +            String groupColumnsStr =
> formElement.getAttribute("group-columns");
> +            if (groupColumnsStr != null &&
> groupColumnsStr.equalsIgnoreCase("false"))
> +                groupColumns = false;
> +        }
>         if (formElement.hasAttribute("use-row-submit")) {
>             String rowSubmit = formElement.getAttribute("use-row-submit");
>             if (rowSubmit != null && rowSubmit.equalsIgnoreCase("true"))
> @@ -1236,7 +1243,8 @@ public class ModelForm extends ModelWidg
>
>             Map<String, List<ModelFormField>> fieldRow =
> UtilMisc.toMap("displayBefore", innerDisplayHyperlinkFieldsBegin,
>                                                    "inputFields",
> innerFormFields,
> -                                                   "displayAfter",
> innerDisplayHyperlinkFieldsEnd);
> +                                                   "displayAfter",
> innerDisplayHyperlinkFieldsEnd,
> +                                                   "mainFieldList",
> mainFieldList);
>             fieldRowsByPosition.add(fieldRow);
>         }
>         // ===========================
> @@ -1246,6 +1254,7 @@ public class ModelForm extends ModelWidg
>             List<ModelFormField> innerDisplayHyperlinkFieldsBegin =
> listsMap.get("displayBefore");
>             List<ModelFormField> innerFormFields =
> listsMap.get("inputFields");
>             List<ModelFormField> innerDisplayHyperlinkFieldsEnd =
> listsMap.get("displayAfter");
> +            List<ModelFormField> mainFieldList =
> listsMap.get("mainFieldList");
>
>             int numOfCells = innerDisplayHyperlinkFieldsBegin.size() +
>                              innerDisplayHyperlinkFieldsEnd.size() +
> @@ -1257,57 +1266,81 @@ public class ModelForm extends ModelWidg
>
>             if (numOfCells > 0) {
>                 formStringRenderer.renderFormatHeaderRowOpen(writer,
> context, this);
> -                Iterator<ModelFormField>
> innerDisplayHyperlinkFieldsBeginIt =
> innerDisplayHyperlinkFieldsBegin.iterator();
> -                while (innerDisplayHyperlinkFieldsBeginIt.hasNext()) {
> -                    ModelFormField modelFormField =
> innerDisplayHyperlinkFieldsBeginIt.next();
> -                    // span columns only if this is the last column in the
> row (not just in this first list)
> -                    if (innerDisplayHyperlinkFieldsBeginIt.hasNext() ||
> numOfCells > innerDisplayHyperlinkFieldsBegin.size()) {
> -
>  formStringRenderer.renderFormatHeaderRowCellOpen(writer, context, this,
> modelFormField, 1);
> -                    } else {
> -
>  formStringRenderer.renderFormatHeaderRowCellOpen(writer, context, this,
> modelFormField, numOfColumnsToSpan);
> +
> +                if (this.groupColumns) {
> +                    Iterator<ModelFormField>
> innerDisplayHyperlinkFieldsBeginIt =
> innerDisplayHyperlinkFieldsBegin.iterator();
> +                    while (innerDisplayHyperlinkFieldsBeginIt.hasNext()) {
> +                        ModelFormField modelFormField =
> innerDisplayHyperlinkFieldsBeginIt.next();
> +                        // span columns only if this is the last column in
> the row (not just in this first list)
> +                        if (innerDisplayHyperlinkFieldsBeginIt.hasNext()
> || numOfCells > innerDisplayHyperlinkFieldsBegin.size()) {
> +
>  formStringRenderer.renderFormatHeaderRowCellOpen(writer, context, this,
> modelFormField, 1);
> +                        } else {
> +
>  formStringRenderer.renderFormatHeaderRowCellOpen(writer, context, this,
> modelFormField, numOfColumnsToSpan);
> +                        }
> +                        formStringRenderer.renderFieldTitle(writer,
> context, modelFormField);
> +
>  formStringRenderer.renderFormatHeaderRowCellClose(writer, context, this,
> modelFormField);
>                     }
> -                    formStringRenderer.renderFieldTitle(writer, context,
> modelFormField);
> -
>  formStringRenderer.renderFormatHeaderRowCellClose(writer, context, this,
> modelFormField);
> -                }
> -                if (innerFormFields.size() > 0) {
> -                    // TODO: manage colspan
> -
>  formStringRenderer.renderFormatHeaderRowFormCellOpen(writer, context,
> this);
> -                    Iterator<ModelFormField> innerFormFieldsIt =
> innerFormFields.iterator();
> -                    while (innerFormFieldsIt.hasNext()) {
> -                        ModelFormField modelFormField =
> innerFormFieldsIt.next();
> +                    if (innerFormFields.size() > 0) {
> +                        // TODO: manage colspan
> +
>  formStringRenderer.renderFormatHeaderRowFormCellOpen(writer, context,
> this);
> +                        Iterator<ModelFormField> innerFormFieldsIt =
> innerFormFields.iterator();
> +                        while (innerFormFieldsIt.hasNext()) {
> +                            ModelFormField modelFormField =
> innerFormFieldsIt.next();
>
> -                        if (separateColumns ||
> modelFormField.getSeparateColumn()) {
> -
>  formStringRenderer.renderFormatItemRowCellOpen(writer, context, this,
> modelFormField, 1);
> -                        }
> +                            if (separateColumns ||
> modelFormField.getSeparateColumn()) {
> +
>  formStringRenderer.renderFormatItemRowCellOpen(writer, context, this,
> modelFormField, 1);
> +                            }
>
> -                        // render title (unless this is a submit or a
> reset field)
> -                        formStringRenderer.renderFieldTitle(writer,
> context, modelFormField);
> +                            // render title (unless this is a submit or a
> reset field)
> +                            formStringRenderer.renderFieldTitle(writer,
> context, modelFormField);
>
> -                        if (separateColumns ||
> modelFormField.getSeparateColumn()) {
> -
>  formStringRenderer.renderFormatItemRowCellClose(writer, context, this,
> modelFormField);
> -                        }
> +                            if (separateColumns ||
> modelFormField.getSeparateColumn()) {
> +
>  formStringRenderer.renderFormatItemRowCellClose(writer, context, this,
> modelFormField);
> +                            }
>
> -                        if (innerFormFieldsIt.hasNext()) {
> -                            // TODO: determine somehow if this is the last
> one... how?
> -                           if (!separateColumns &&
> !modelFormField.getSeparateColumn()) {
> -
>  formStringRenderer.renderFormatHeaderRowFormCellTitleSeparator(writer,
> context, this, modelFormField, false);
> -                           }
> +                            if (innerFormFieldsIt.hasNext()) {
> +                                // TODO: determine somehow if this is the
> last one... how?
> +                               if (!separateColumns &&
> !modelFormField.getSeparateColumn()) {
> +
>  formStringRenderer.renderFormatHeaderRowFormCellTitleSeparator(writer,
> context, this, modelFormField, false);
> +                               }
> +                            }
>                         }
> +
>  formStringRenderer.renderFormatHeaderRowFormCellClose(writer, context,
> this);
>                     }
> -
>  formStringRenderer.renderFormatHeaderRowFormCellClose(writer, context,
> this);
> -                }
> -                Iterator<ModelFormField> innerDisplayHyperlinkFieldsEndIt
> = innerDisplayHyperlinkFieldsEnd.iterator();
> -                while (innerDisplayHyperlinkFieldsEndIt.hasNext()) {
> -                    ModelFormField modelFormField =
> innerDisplayHyperlinkFieldsEndIt.next();
> -                    // span columns only if this is the last column in the
> row (not just in this first list)
> -                    if (innerDisplayHyperlinkFieldsEndIt.hasNext() ||
> numOfCells > innerDisplayHyperlinkFieldsEnd.size()) {
> -
>  formStringRenderer.renderFormatHeaderRowCellOpen(writer, context, this,
> modelFormField, 1);
> -                    } else {
> -
>  formStringRenderer.renderFormatHeaderRowCellOpen(writer, context, this,
> modelFormField, numOfColumnsToSpan);
> +                    Iterator<ModelFormField>
> innerDisplayHyperlinkFieldsEndIt =
> innerDisplayHyperlinkFieldsEnd.iterator();
> +                    while (innerDisplayHyperlinkFieldsEndIt.hasNext()) {
> +                        ModelFormField modelFormField =
> innerDisplayHyperlinkFieldsEndIt.next();
> +                        // span columns only if this is the last column in
> the row (not just in this first list)
> +                        if (innerDisplayHyperlinkFieldsEndIt.hasNext() ||
> numOfCells > innerDisplayHyperlinkFieldsEnd.size()) {
> +
>  formStringRenderer.renderFormatHeaderRowCellOpen(writer, context, this,
> modelFormField, 1);
> +                        } else {
> +
>  formStringRenderer.renderFormatHeaderRowCellOpen(writer, context, this,
> modelFormField, numOfColumnsToSpan);
> +                        }
> +                        formStringRenderer.renderFieldTitle(writer,
> context, modelFormField);
> +
>  formStringRenderer.renderFormatHeaderRowCellClose(writer, context, this,
> modelFormField);
> +                    }
> +                } else {
> +                    Iterator<ModelFormField> mainFieldListIter =
> mainFieldList.iterator();
> +                    while (mainFieldListIter.hasNext()) {
> +                        ModelFormField modelFormField =
> mainFieldListIter.next();
> +
> +                        // don't do any header for hidden or ignored
> fields
> +                        ModelFormField.FieldInfo fieldInfo =
> modelFormField.getFieldInfo();
> +                        if (fieldInfo.getFieldType() ==
> ModelFormField.FieldInfo.HIDDEN || fieldInfo.getFieldType() ==
> ModelFormField.FieldInfo.IGNORED) {
> +                            continue;
> +                        }
> +
> +                        // span columns only if this is the last column in
> the row (not just in this first list)
> +                        if (mainFieldListIter.hasNext() || numOfCells >
> mainFieldList.size()) {
> +
>  formStringRenderer.renderFormatHeaderRowCellOpen(writer, context, this,
> modelFormField, 1);
> +                        } else {
> +
>  formStringRenderer.renderFormatHeaderRowCellOpen(writer, context, this,
> modelFormField, numOfColumnsToSpan);
> +                        }
> +                        formStringRenderer.renderFieldTitle(writer,
> context, modelFormField);
> +
>  formStringRenderer.renderFormatHeaderRowCellClose(writer, context, this,
> modelFormField);
>                     }
> -                    formStringRenderer.renderFieldTitle(writer, context,
> modelFormField);
> -
>  formStringRenderer.renderFormatHeaderRowCellClose(writer, context, this,
> modelFormField);
>                 }
> +
>                 formStringRenderer.renderFormatHeaderRowClose(writer,
> context, this);
>             }
>         }
> @@ -1589,7 +1622,9 @@ public class ModelForm extends ModelWidg
>                     // are now rendered: this will create a visual
> representation
>                     // of one row (for the current position).
>                     if (innerDisplayHyperlinkFieldsBegin.size() > 0 ||
> innerFormFields.size() > 0 || innerDisplayHyperlinkFieldsEnd.size() > 0) {
> -                        this.renderItemRow(writer, localContext,
> formStringRenderer, formPerItem, hiddenIgnoredFieldList,
> innerDisplayHyperlinkFieldsBegin, innerFormFields,
> innerDisplayHyperlinkFieldsEnd, currentPosition, numOfColumns);
> +                        this.renderItemRow(writer, localContext,
> formStringRenderer, formPerItem, hiddenIgnoredFieldList,
> +                                innerDisplayHyperlinkFieldsBegin,
> innerFormFields, innerDisplayHyperlinkFieldsEnd, fieldListByPosition,
> +                                currentPosition, numOfColumns);
>                     }
>                 } // iteration on positions
>             } // iteration on items
> @@ -1615,7 +1650,10 @@ public class ModelForm extends ModelWidg
>     // The fields in the three lists, usually created in the preprocessing
> phase
>     // of the renderItemRows method are rendered: this will create a visual
> representation
>     // of one row (corresponding to one position).
> -    public void renderItemRow(Appendable writer, Map<String, Object>
> localContext, FormStringRenderer formStringRenderer, boolean formPerItem,
> List<ModelFormField> hiddenIgnoredFieldList, List<ModelFormField>
> innerDisplayHyperlinkFieldsBegin, List<ModelFormField> innerFormFields,
> List<ModelFormField> innerDisplayHyperlinkFieldsEnd, int position, int
> numOfColumns) throws IOException {
> +    public void renderItemRow(Appendable writer, Map<String, Object>
> localContext, FormStringRenderer formStringRenderer,
> +            boolean formPerItem, List<ModelFormField>
> hiddenIgnoredFieldList, List<ModelFormField>
> innerDisplayHyperlinkFieldsBegin,
> +            List<ModelFormField> innerFormFields, List<ModelFormField>
> innerDisplayHyperlinkFieldsEnd, List<ModelFormField> mainFieldList,
> +            int position, int numOfColumns) throws IOException {
>         int numOfCells = innerDisplayHyperlinkFieldsBegin.size() +
>                          innerDisplayHyperlinkFieldsEnd.size() +
>                          (innerFormFields.size() > 0? 1: 0);
> @@ -1638,86 +1676,111 @@ public class ModelForm extends ModelWidg
>             }
>         }
>
> -        // do the first part of display and hyperlink fields
> -        Iterator<ModelFormField> innerDisplayHyperlinkFieldIter =
> innerDisplayHyperlinkFieldsBegin.iterator();
> -        while (innerDisplayHyperlinkFieldIter.hasNext()) {
> -            boolean cellOpen = false;
> -            ModelFormField modelFormField =
> innerDisplayHyperlinkFieldIter.next();
> -            // span columns only if this is the last column in the row
> (not just in this first list)
> -            if( fieldCount.get(modelFormField.getName()) < 2 ){
> -                if ((innerDisplayHyperlinkFieldIter.hasNext() ||
> numOfCells > innerDisplayHyperlinkFieldsBegin.size())) {
> -                    formStringRenderer.renderFormatItemRowCellOpen(writer,
> localContext, this, modelFormField, 1);
> -                } else {
> -                    formStringRenderer.renderFormatItemRowCellOpen(writer,
> localContext, this, modelFormField, numOfColumnsToSpan);
> +        if (this.groupColumns) {
> +            // do the first part of display and hyperlink fields
> +            Iterator<ModelFormField> innerDisplayHyperlinkFieldIter =
> innerDisplayHyperlinkFieldsBegin.iterator();
> +            while (innerDisplayHyperlinkFieldIter.hasNext()) {
> +                boolean cellOpen = false;
> +                ModelFormField modelFormField =
> innerDisplayHyperlinkFieldIter.next();
> +                // span columns only if this is the last column in the row
> (not just in this first list)
> +                if( fieldCount.get(modelFormField.getName()) < 2 ){
> +                    if ((innerDisplayHyperlinkFieldIter.hasNext() ||
> numOfCells > innerDisplayHyperlinkFieldsBegin.size())) {
> +
>  formStringRenderer.renderFormatItemRowCellOpen(writer, localContext, this,
> modelFormField, 1);
> +                    } else {
> +
>  formStringRenderer.renderFormatItemRowCellOpen(writer, localContext, this,
> modelFormField, numOfColumnsToSpan);
> +                    }
> +                    cellOpen = true;
>                 }
> -                cellOpen = true;
> -            }
> -            if ((!"list".equals(this.getType()) &&
> !"multi".equals(this.getType())) || modelFormField.shouldUse(localContext))
> {
> -                    if(( fieldCount.get(modelFormField.getName()) > 1 )){
> -                        if ((innerDisplayHyperlinkFieldIter.hasNext() ||
> numOfCells > innerDisplayHyperlinkFieldsBegin.size())) {
> -
>  formStringRenderer.renderFormatItemRowCellOpen(writer, localContext, this,
> modelFormField, 1);
> -                        } else {
> -
>  formStringRenderer.renderFormatItemRowCellOpen(writer, localContext, this,
> modelFormField, numOfColumnsToSpan);
> +                if ((!"list".equals(this.getType()) &&
> !"multi".equals(this.getType())) || modelFormField.shouldUse(localContext))
> {
> +                        if(( fieldCount.get(modelFormField.getName()) > 1
> )){
> +                            if ((innerDisplayHyperlinkFieldIter.hasNext()
> || numOfCells > innerDisplayHyperlinkFieldsBegin.size())) {
> +
>  formStringRenderer.renderFormatItemRowCellOpen(writer, localContext, this,
> modelFormField, 1);
> +                            } else {
> +
>  formStringRenderer.renderFormatItemRowCellOpen(writer, localContext, this,
> modelFormField, numOfColumnsToSpan);
> +                            }
> +                            cellOpen = true;
>                         }
> -                        cellOpen = true;
> -                    }
> -                modelFormField.renderFieldString(writer, localContext,
> formStringRenderer);
> -            }
> -            if (cellOpen) {
> -                formStringRenderer.renderFormatItemRowCellClose(writer,
> localContext, this, modelFormField);
> +                    modelFormField.renderFieldString(writer, localContext,
> formStringRenderer);
> +                }
> +                if (cellOpen) {
> +
>  formStringRenderer.renderFormatItemRowCellClose(writer, localContext, this,
> modelFormField);
> +                }
>             }
> -        }
>
> -        // The form cell is rendered only if there is at least an input
> field
> -        if (innerFormFields.size() > 0) {
> -            // render the "form" cell
> -            formStringRenderer.renderFormatItemRowFormCellOpen(writer,
> localContext, this); // TODO: colspan
> -
> -            if (formPerItem) {
> -                formStringRenderer.renderFormOpen(writer, localContext,
> this);
> -            }
> -
> -            // do all of the hidden fields...
> -            this.renderHiddenIgnoredFields(writer, localContext,
> formStringRenderer, hiddenIgnoredFieldList);
> -
> -            Iterator<ModelFormField> innerFormFieldIter =
> innerFormFields.iterator();
> -            while (innerFormFieldIter.hasNext()) {
> -                ModelFormField modelFormField = innerFormFieldIter.next();
> -                if (separateColumns || modelFormField.getSeparateColumn())
> {
> -                    formStringRenderer.renderFormatItemRowCellOpen(writer,
> localContext, this, modelFormField, 1);
> +            // The form cell is rendered only if there is at least an
> input field
> +            if (innerFormFields.size() > 0) {
> +                // render the "form" cell
> +                formStringRenderer.renderFormatItemRowFormCellOpen(writer,
> localContext, this); // TODO: colspan
> +
> +                if (formPerItem) {
> +                    formStringRenderer.renderFormOpen(writer,
> localContext, this);
>                 }
> -                // render field widget
> -                if ((!"list".equals(this.getType()) &&
> !"multi".equals(this.getType())) || modelFormField.shouldUse(localContext))
> {
> -                    modelFormField.renderFieldString(writer, localContext,
> formStringRenderer);
> +
> +                // do all of the hidden fields...
> +                this.renderHiddenIgnoredFields(writer, localContext,
> formStringRenderer, hiddenIgnoredFieldList);
> +
> +                Iterator<ModelFormField> innerFormFieldIter =
> innerFormFields.iterator();
> +                while (innerFormFieldIter.hasNext()) {
> +                    ModelFormField modelFormField =
> innerFormFieldIter.next();
> +                    if (separateColumns ||
> modelFormField.getSeparateColumn()) {
> +
>  formStringRenderer.renderFormatItemRowCellOpen(writer, localContext, this,
> modelFormField, 1);
> +                    }
> +                    // render field widget
> +                    if ((!"list".equals(this.getType()) &&
> !"multi".equals(this.getType())) || modelFormField.shouldUse(localContext))
> {
> +                        modelFormField.renderFieldString(writer,
> localContext, formStringRenderer);
> +                    }
> +
> +                    if (separateColumns ||
> modelFormField.getSeparateColumn()) {
> +
>  formStringRenderer.renderFormatItemRowCellClose(writer, localContext, this,
> modelFormField);
> +                    }
>                 }
>
> -                if (separateColumns || modelFormField.getSeparateColumn())
> {
> -
>  formStringRenderer.renderFormatItemRowCellClose(writer, localContext, this,
> modelFormField);
> +                if (formPerItem) {
> +                    formStringRenderer.renderFormClose(writer,
> localContext, this);
>                 }
> +
> +
>  formStringRenderer.renderFormatItemRowFormCellClose(writer, localContext,
> this);
>             }
>
> -            if (formPerItem) {
> -                formStringRenderer.renderFormClose(writer, localContext,
> this);
> +            // render the rest of the display/hyperlink fields
> +            innerDisplayHyperlinkFieldIter =
> innerDisplayHyperlinkFieldsEnd.iterator();
> +            while (innerDisplayHyperlinkFieldIter.hasNext()) {
> +                ModelFormField modelFormField =
> innerDisplayHyperlinkFieldIter.next();
> +                // span columns only if this is the last column in the row
> +                if (innerDisplayHyperlinkFieldIter.hasNext()) {
> +                    formStringRenderer.renderFormatItemRowCellOpen(writer,
> localContext, this, modelFormField, 1);
> +                } else {
> +                    formStringRenderer.renderFormatItemRowCellOpen(writer,
> localContext, this, modelFormField, numOfColumnsToSpan);
> +                }
> +                if ((!"list".equals(this.getType()) &&
> !"multi".equals(this.getType())) || modelFormField.shouldUse(localContext))
> {
> +                    modelFormField.renderFieldString(writer, localContext,
> formStringRenderer);
> +                }
> +                formStringRenderer.renderFormatItemRowCellClose(writer,
> localContext, this, modelFormField);
>             }
> +        } else {
> +            Iterator<ModelFormField> mainFieldIter =
> mainFieldList.iterator();
> +            while (mainFieldIter.hasNext()) {
> +                ModelFormField modelFormField = mainFieldIter.next();
>
> -            formStringRenderer.renderFormatItemRowFormCellClose(writer,
> localContext, this);
> -        }
> +                // don't do any header for hidden or ignored fields
> +                ModelFormField.FieldInfo fieldInfo =
> modelFormField.getFieldInfo();
> +                if (fieldInfo.getFieldType() ==
> ModelFormField.FieldInfo.HIDDEN || fieldInfo.getFieldType() ==
> ModelFormField.FieldInfo.IGNORED) {
> +                    continue;
> +                }
>
> -        // render the rest of the display/hyperlink fields
> -        innerDisplayHyperlinkFieldIter =
> innerDisplayHyperlinkFieldsEnd.iterator();
> -        while (innerDisplayHyperlinkFieldIter.hasNext()) {
> -            ModelFormField modelFormField =
> innerDisplayHyperlinkFieldIter.next();
> -            // span columns only if this is the last column in the row
> -            if (innerDisplayHyperlinkFieldIter.hasNext()) {
> -                formStringRenderer.renderFormatItemRowCellOpen(writer,
> localContext, this, modelFormField, 1);
> -            } else {
> -                formStringRenderer.renderFormatItemRowCellOpen(writer,
> localContext, this, modelFormField, numOfColumnsToSpan);
> -            }
> -            if ((!"list".equals(this.getType()) &&
> !"multi".equals(this.getType())) || modelFormField.shouldUse(localContext))
> {
> -                modelFormField.renderFieldString(writer, localContext,
> formStringRenderer);
> +                // span columns only if this is the last column in the row
> +                if (mainFieldIter.hasNext()) {
> +                    formStringRenderer.renderFormatItemRowCellOpen(writer,
> localContext, this, modelFormField, 1);
> +                } else {
> +                    formStringRenderer.renderFormatItemRowCellOpen(writer,
> localContext, this, modelFormField, numOfColumnsToSpan);
> +                }
> +                if ((!"list".equals(this.getType()) &&
> !"multi".equals(this.getType())) || modelFormField.shouldUse(localContext))
> {
> +                    modelFormField.renderFieldString(writer, localContext,
> formStringRenderer);
> +                }
> +                formStringRenderer.renderFormatItemRowCellClose(writer,
> localContext, this, modelFormField);
>             }
> -            formStringRenderer.renderFormatItemRowCellClose(writer,
> localContext, this, modelFormField);
>         }
> +
>
>         // render row formatting close
>         formStringRenderer.renderFormatItemRowClose(writer, localContext,
> this);
>
>
>

Reply via email to