/** 重载方法,调整元素的输出顺序。 */ private void writeElementTag( TagWriter tagWriter, Object item, Object value, Object label, int itemIndex) throws JspException { String id = resolveId(); String resolvedLabelClass = getInputType(); if (labelCssClass != null) { resolvedLabelClass += " " + labelCssClass; } tagWriter.startTag("label"); tagWriter.writeAttribute("for", id); tagWriter.writeAttribute("class", resolvedLabelClass); if (itemIndex > 0) { Object resolvedDelimiter = evaluate("delimiter", getDelimiter()); if (resolvedDelimiter != null) { tagWriter.appendValue(resolvedDelimiter.toString()); } } tagWriter.startTag("input"); writeOptionalAttribute(tagWriter, "id", id); writeOptionalAttribute(tagWriter, "name", getName()); writeOptionalAttributes(tagWriter); tagWriter.writeAttribute("type", getInputType()); renderFromValue(item, value, tagWriter); tagWriter.endTag(); tagWriter.appendValue(convertToDisplayString(label)); tagWriter.endTag(); }
@Override protected int writeTagContent(TagWriter tagWriter) throws JspException { super.writeTagContent(tagWriter); if (!isDisabled()) { // Write out the 'field was present' marker. tagWriter.startTag("input"); tagWriter.writeAttribute("type", "hidden"); String name = WebDataBinder.DEFAULT_FIELD_MARKER_PREFIX + getName(); tagWriter.writeAttribute("name", name); tagWriter.writeAttribute("value", processFieldValue(name, "on", getInputType())); tagWriter.endTag(); } return SKIP_BODY; }
/** * Creates messagesPanel tag * * @throws JspException In case when {@link JspException} is generated later in the chain when tag * configured by messagesPanel could not be created * @see org.springframework.web.servlet.tags.RequestContextAwareTag#doStartTagInternal() */ @Override protected int doStartTagInternal() throws JspException { if (!StringUtils.hasText(this.panelElement) && !StringUtils.hasText(this.outerElement) && !StringUtils.hasText(this.innerElement)) { throw new JspTagException( "At least one out of panelElement, outerElement, innerElement should be set"); } TagWriter tagWriter = createTagWriter(); Object messages = this.pageContext.findAttribute(messagesAttributeName); if (messages != null) { if (StringUtils.hasText(panelElement)) { tagWriter.startTag(panelElement); // <div> StringBuilder className = new StringBuilder(panelClassName); String type = getType(messages); if (panelTypeClassPrefix != null && StringUtils.hasText(type)) { if (StringUtils.hasLength(className)) { className.append(" "); } className.append(panelTypeClassPrefix); } className.append(type); if (StringUtils.hasText(className)) { tagWriter.writeAttribute("class", className.toString()); } } { if (StringUtils.hasText(outerElement)) { tagWriter.startTag(outerElement); // <ul> } writeMessages(tagWriter, messages); if (StringUtils.hasText(outerElement)) { tagWriter.endTag(); // </ul> } } if (StringUtils.hasText(panelElement)) { tagWriter.endTag(); // </div> } } return EVAL_BODY_INCLUDE; }