📄 modelform.java
字号:
}
public void renderMultiFormString(StringBuffer buffer, Map context, FormStringRenderer formStringRenderer, int positions) {
formStringRenderer.renderFormOpen(buffer, context, this);
// render formatting wrapper open
formStringRenderer.renderFormatListWrapperOpen(buffer, context, this);
// ===== render header row =====
this.renderHeaderRow(buffer, context, formStringRenderer);
// ===== render the item rows =====
this.renderItemRows(buffer, context, formStringRenderer, false);
// render formatting wrapper close
formStringRenderer.renderFormatListWrapperClose(buffer, context, this);
formStringRenderer.renderFormClose(buffer, context, this);
}
public void renderHeaderRow(StringBuffer buffer, Map context, FormStringRenderer formStringRenderer) {
formStringRenderer.renderFormatHeaderRowOpen(buffer, context, this);
// render title for each field, except hidden & ignored, etc
// start by rendering all display and hyperlink fields, until we
//get to a field that should go into the form cell, then render
//the form cell with all non-display and non-hyperlink fields, then
//do a start after the first form input field and
//render all display and hyperlink fields after the form
// do the first part of display and hyperlink fields
Iterator displayHyperlinkFieldIter = this.fieldList.iterator();
while (displayHyperlinkFieldIter.hasNext()) {
ModelFormField modelFormField = (ModelFormField) displayHyperlinkFieldIter.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.HYPERLINK) {
// okay, now do the form cell
break;
}
if (!modelFormField.shouldUse(context)) {
continue;
}
formStringRenderer.renderFormatHeaderRowCellOpen(buffer, context, this, modelFormField);
formStringRenderer.renderFieldTitle(buffer, context, modelFormField);
formStringRenderer.renderFormatHeaderRowCellClose(buffer, context, this, modelFormField);
}
List headerFormFields = new LinkedList();
Iterator formFieldIter = this.fieldList.iterator();
boolean isFirstFormHeader = true;
while (formFieldIter.hasNext()) {
ModelFormField modelFormField = (ModelFormField) formFieldIter.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.HYPERLINK) {
continue;
}
// skip all of the submit/reset fields
if (fieldInfo.getFieldType() == ModelFormField.FieldInfo.SUBMIT || fieldInfo.getFieldType() == ModelFormField.FieldInfo.RESET) {
continue;
}
if (!modelFormField.shouldUse(context)) {
continue;
}
headerFormFields.add(modelFormField);
}
// render the "form" cell
formStringRenderer.renderFormatHeaderRowFormCellOpen(buffer, context, this);
Iterator headerFormFieldIter = headerFormFields.iterator();
while (headerFormFieldIter.hasNext()) {
ModelFormField modelFormField = (ModelFormField) headerFormFieldIter.next();
ModelFormField.FieldInfo fieldInfo = modelFormField.getFieldInfo();
// render title (unless this is a submit or a reset field)
formStringRenderer.renderFieldTitle(buffer, context, modelFormField);
if (headerFormFieldIter.hasNext()) {
// TODO: determine somehow if this is the last one... how?
formStringRenderer.renderFormatHeaderRowFormCellTitleSeparator(buffer, context, this, modelFormField, false);
}
}
formStringRenderer.renderFormatHeaderRowFormCellClose(buffer, context, this);
// render the rest of the display/hyperlink fields
while (displayHyperlinkFieldIter.hasNext()) {
ModelFormField modelFormField = (ModelFormField) displayHyperlinkFieldIter.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.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);
}
public void renderItemRows(StringBuffer buffer, Map context, FormStringRenderer formStringRenderer, boolean formPerItem) {
// if list is empty, do not render rows
List items = (List) context.get(this.getListName());
if (items == null || items.size() == 0) {
// do nothing; we could show an simple box with a message here
} else {
// render item rows
Iterator itemIter = items.iterator();
int itemIndex = -1;
while (itemIter.hasNext()) {
itemIndex++;
Map localContext = new HashMap(context);
Object item = itemIter.next();
if (UtilValidate.isNotEmpty(this.getListEntryName())) {
localContext.put(this.getListEntryName(), item);
} else {
Map itemMap = (Map) item;
localContext.putAll(itemMap);
}
localContext.put("itemIndex", new Integer(itemIndex));
// 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.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.HYPERLINK) {
continue;
}
if (!modelFormField.shouldUse(localContext)) {
continue;
}
// render field widget
modelFormField.renderFieldString(buffer, localContext, formStringRenderer);
}
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.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);
}
}
}
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 :
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());
}
break;
case ModelFormField.FieldInfo.HYPERLINK :
ModelFormField.HyperlinkField hyperlinkField = (ModelFormField.HyperlinkField) fieldInfo;
if (hyperlinkField.getAlsoHidden() && modelFormField.shouldUse(context)) {
formStringRenderer.renderHiddenField(buffer, context, modelFormField, modelFormField.getEntry(context));
// don't add to already rendered here, or the hyperlink won't ger rendered: if (alreadyRendered != null) alreadyRendered.add(modelFormField.getName());
}
break;
}
}
}
public LocalDispatcher getDispacher() {
return this.dispatcher;
}
public GenericDelegator getDelegator() {
return this.delegator;
}
/**
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -