📄 modelform.java
字号:
if (fieldInfo.getFieldType() == ModelFormField.FieldInfo.HIDDEN || fieldInfo.getFieldType() == ModelFormField.FieldInfo.IGNORED) { continue; } // skip all non-display and non-hyperlink fields if (fieldInfo.getFieldType() != ModelFormField.FieldInfo.DISPLAY && fieldInfo.getFieldType() != ModelFormField.FieldInfo.DISPLAY_ENTITY && fieldInfo.getFieldType() != ModelFormField.FieldInfo.HYPERLINK) { continue; } if (!modelFormField.shouldUse(context)) { continue; } formStringRenderer.renderFormatHeaderRowCellOpen(buffer, context, this, modelFormField); formStringRenderer.renderFieldTitle(buffer, context, modelFormField); formStringRenderer.renderFormatHeaderRowCellClose(buffer, context, this, modelFormField); } formStringRenderer.renderFormatHeaderRowClose(buffer, context, this); } protected Object safeNext(Iterator iterator) { try { return iterator.next(); } catch (NoSuchElementException e) { return null; } } public void renderItemRows(StringBuffer buffer, Map context, FormStringRenderer formStringRenderer, boolean formPerItem) { this.rowCount = 0; String lookupName = getListIteratorName(); if (UtilValidate.isEmpty(lookupName)) { lookupName = getListName(); } if (UtilValidate.isEmpty(lookupName)) { Debug.logError("No value for list or iterator name found.", module); return; } Object obj = context.get(lookupName); if (obj == null) { Debug.logError("No object for list or iterator name:" + lookupName + " found.", module); return; } // if list is empty, do not render rows Iterator iter = null; List items = null; if (obj instanceof Iterator) { iter = (Iterator) obj; setPaginate(true); } else if (obj instanceof List) { items = (List) obj; iter = items.listIterator(); setPaginate(true); } // set low and high index getListLimits(context, obj); if (iter != null) { // render item rows int itemIndex = -1; Object item = null; while ((item = this.safeNext(iter)) != null) { itemIndex++; if (itemIndex >= highIndex) { break; } // TODO: this is a bad design, for EntityListIterators we should skip to the lowIndex and go from there, MUCH more efficient... if (itemIndex < lowIndex) { continue; } Map localContext = new HashMap(context); if (UtilValidate.isNotEmpty(this.getListEntryName())) { localContext.put(this.getListEntryName(), item); } else { Map itemMap = (Map) item; localContext.putAll(itemMap); } ModelFormAction.runSubActions(this.rowActions, localContext); localContext.put("itemIndex", new Integer(itemIndex - lowIndex)); this.resetBshInterpreter(localContext); this.rowCount++; if (Debug.verboseOn()) Debug.logVerbose("In form got another row, context is: " + localContext, module); // Check to see if there is a field, same name and same use-when (could come from extended form) for (int j = 0; j < this.fieldList.size(); j++) { ModelFormField modelFormField = (ModelFormField) this.fieldList.get(j); if (!modelFormField.isUseWhenEmpty()) { boolean shouldUse1 = modelFormField.shouldUse(localContext); for (int i = j+1; i < this.fieldList.size(); i++) { ModelFormField curField = (ModelFormField) this.fieldList.get(i); if (curField.getName() != null && curField.getName().equals(modelFormField.getName())) { boolean shouldUse2 = curField.shouldUse(localContext); if (shouldUse1 == shouldUse2) { this.fieldList.remove(i--); } } else { continue; } } } } // render row formatting open formStringRenderer.renderFormatItemRowOpen(buffer, localContext, this); // do the first part of display and hyperlink fields Iterator innerDisplayHyperlinkFieldIter = this.fieldList.iterator(); while (innerDisplayHyperlinkFieldIter.hasNext()) { ModelFormField modelFormField = (ModelFormField) innerDisplayHyperlinkFieldIter.next(); ModelFormField.FieldInfo fieldInfo = modelFormField.getFieldInfo(); // don't do any header for hidden or ignored fields if (fieldInfo.getFieldType() == ModelFormField.FieldInfo.HIDDEN || fieldInfo.getFieldType() == ModelFormField.FieldInfo.IGNORED) { continue; } if (fieldInfo.getFieldType() != ModelFormField.FieldInfo.DISPLAY && fieldInfo.getFieldType() != ModelFormField.FieldInfo.DISPLAY_ENTITY && fieldInfo.getFieldType() != ModelFormField.FieldInfo.HYPERLINK) { // okay, now do the form cell break; } if (!modelFormField.shouldUse(localContext)) { continue; } formStringRenderer.renderFormatItemRowCellOpen(buffer, localContext, this, modelFormField); modelFormField.renderFieldString(buffer, localContext, formStringRenderer); formStringRenderer.renderFormatItemRowCellClose(buffer, localContext, this, modelFormField); } // render the "form" cell formStringRenderer.renderFormatItemRowFormCellOpen(buffer, localContext, this); if (formPerItem) { formStringRenderer.renderFormOpen(buffer, localContext, this); } // do all of the hidden fields... this.renderHiddenIgnoredFields(buffer, localContext, formStringRenderer, null); Iterator innerFormFieldIter = this.fieldList.iterator(); while (innerFormFieldIter.hasNext()) { ModelFormField modelFormField = (ModelFormField) innerFormFieldIter.next(); ModelFormField.FieldInfo fieldInfo = modelFormField.getFieldInfo(); // don't do any header for hidden or ignored fields if (fieldInfo.getFieldType() == ModelFormField.FieldInfo.HIDDEN || fieldInfo.getFieldType() == ModelFormField.FieldInfo.IGNORED) { continue; } // skip all of the display/hyperlink fields if (fieldInfo.getFieldType() == ModelFormField.FieldInfo.DISPLAY || fieldInfo.getFieldType() == ModelFormField.FieldInfo.DISPLAY_ENTITY || fieldInfo.getFieldType() == ModelFormField.FieldInfo.HYPERLINK) { continue; } if (!modelFormField.shouldUse(localContext)) { continue; } if (separateColumns || modelFormField.getSeparateColumn()) formStringRenderer.renderFormatItemRowCellOpen(buffer, localContext, this, modelFormField); // render field widget modelFormField.renderFieldString(buffer, localContext, formStringRenderer); if (separateColumns || modelFormField.getSeparateColumn()) formStringRenderer.renderFormatItemRowCellClose(buffer, localContext, this, modelFormField); } if (formPerItem) { formStringRenderer.renderFormClose(buffer, localContext, this); } formStringRenderer.renderFormatItemRowFormCellClose(buffer, localContext, this); // render the rest of the display/hyperlink fields while (innerDisplayHyperlinkFieldIter.hasNext()) { ModelFormField modelFormField = (ModelFormField) innerDisplayHyperlinkFieldIter.next(); ModelFormField.FieldInfo fieldInfo = modelFormField.getFieldInfo(); // don't do any header for hidden or ignored fields if (fieldInfo.getFieldType() == ModelFormField.FieldInfo.HIDDEN || fieldInfo.getFieldType() == ModelFormField.FieldInfo.IGNORED) { continue; } // skip all non-display and non-hyperlink fields if (fieldInfo.getFieldType() != ModelFormField.FieldInfo.DISPLAY && fieldInfo.getFieldType() != ModelFormField.FieldInfo.DISPLAY_ENTITY && fieldInfo.getFieldType() != ModelFormField.FieldInfo.HYPERLINK) { continue; } if (!modelFormField.shouldUse(localContext)) { continue; } formStringRenderer.renderFormatItemRowCellOpen(buffer, localContext, this, modelFormField); modelFormField.renderFieldString(buffer, localContext, formStringRenderer); formStringRenderer.renderFormatItemRowCellClose(buffer, localContext, this, modelFormField); } // render row formatting close formStringRenderer.renderFormatItemRowClose(buffer, localContext, this); } if ((itemIndex + 1) < highIndex) { setHighIndex(itemIndex + 1); } setActualPageSize(highIndex - lowIndex); if (iter instanceof EntityListIterator) { try { ((EntityListIterator) iter).close(); } catch(GenericEntityException e) { Debug.logError(e, "Error closing list form render EntityListIterator: " + e.toString(), module); } }// if (listSize < actualPageSize) {// setListSize(actualPageSize);// context.put("listSize", new Integer(listSize));// } } } public void renderHiddenIgnoredFields(StringBuffer buffer, Map context, FormStringRenderer formStringRenderer, Set alreadyRendered) { Iterator fieldIter = this.fieldList.iterator(); while (fieldIter.hasNext()) { ModelFormField modelFormField = (ModelFormField) fieldIter.next(); ModelFormField.FieldInfo fieldInfo = modelFormField.getFieldInfo(); // render hidden/ignored field widget switch (fieldInfo.getFieldType()) { case ModelFormField.FieldInfo.HIDDEN : case ModelFormField.FieldInfo.IGNORED : if (modelFormField.shouldUse(context)) { modelFormField.renderFieldString(buffer, context, formStringRenderer); if (alreadyRendered != null) alreadyRendered.add(modelFormField.getName()); } break; case ModelFormField.FieldInfo.DISPLAY : case ModelFormField.FieldInfo.DISPLAY_ENTITY : ModelFormField.DisplayField displayField = (ModelFormField.DisplayField) fieldInfo; if (displayField.getAlsoHidden() && modelFormField.shouldUse(context)) { formStringRenderer.renderHiddenField(buffer, context, modelFormField, modelFormField.getEntry(context)); // don't add to already rendered here, or the display won't ger rendered: if (alreadyRendered != null) alreadyRendered.add(modelFormField.getName()); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -