/** * Writes the optional attributes configured via this base class to the supplied {@link * TagWriter}. The set of optional attributes that will be rendered includes any non-standard * dynamic attributes. Called by {@link #writeDefaultAttributes(TagWriter)}. */ protected void writeOptionalAttributes(TagWriter tagWriter) throws JspException { tagWriter.writeOptionalAttributeValue(CLASS_ATTRIBUTE, resolveCssClass()); tagWriter.writeOptionalAttributeValue( STYLE_ATTRIBUTE, ObjectUtils.getDisplayString(evaluate("cssStyle", getCssStyle()))); writeOptionalAttribute(tagWriter, LANG_ATTRIBUTE, getLang()); writeOptionalAttribute(tagWriter, TITLE_ATTRIBUTE, getTitle()); writeOptionalAttribute(tagWriter, DIR_ATTRIBUTE, getDir()); writeOptionalAttribute(tagWriter, TABINDEX_ATTRIBUTE, getTabindex()); writeOptionalAttribute(tagWriter, ONCLICK_ATTRIBUTE, getOnclick()); writeOptionalAttribute(tagWriter, ONDBLCLICK_ATTRIBUTE, getOndblclick()); writeOptionalAttribute(tagWriter, ONMOUSEDOWN_ATTRIBUTE, getOnmousedown()); writeOptionalAttribute(tagWriter, ONMOUSEUP_ATTRIBUTE, getOnmouseup()); writeOptionalAttribute(tagWriter, ONMOUSEOVER_ATTRIBUTE, getOnmouseover()); writeOptionalAttribute(tagWriter, ONMOUSEMOVE_ATTRIBUTE, getOnmousemove()); writeOptionalAttribute(tagWriter, ONMOUSEOUT_ATTRIBUTE, getOnmouseout()); writeOptionalAttribute(tagWriter, ONKEYPRESS_ATTRIBUTE, getOnkeypress()); writeOptionalAttribute(tagWriter, ONKEYUP_ATTRIBUTE, getOnkeyup()); writeOptionalAttribute(tagWriter, ONKEYDOWN_ATTRIBUTE, getOnkeydown()); if (!CollectionUtils.isEmpty(this.dynamicAttributes)) { for (String attr : this.dynamicAttributes.keySet()) { tagWriter.writeOptionalAttributeValue( attr, getDisplayString(this.dynamicAttributes.get(attr))); } } }
/** * Writes the way. * * @param way The way to be processed. */ public void process(Way way) { OsmUser user; List<WayNode> wayNodes; Collection<Tag> tags; user = way.getUser(); startObject(first); addAttribute("id", way.getId(), true); addAttribute("version", way.getVersion(), false); addAttribute("timestamp", way.getFormattedTimestamp(getTimestampFormat()), false); if (!user.equals(OsmUser.NONE)) { addAttribute("uid", user.getId(), false); addAttribute("user", user.getName(), false); } if (way.getChangesetId() != 0) { addAttribute("changeset", way.getChangesetId(), false); } wayNodes = way.getWayNodes(); tags = way.getTags(); if (wayNodes.size() > 0 || tags.size() > 0) { objectKey("nodes", false); startList(); for (WayNode wayNode : wayNodes) { wayNodeWriter.processWayNode(wayNode); } wayNodeWriter.reset(); endList(); objectKey("tags", false); startObject(true); for (Tag tag : tags) { tagWriter.process(tag); } tagWriter.reset(); endObject(); } endObject(); if (first) { first = false; } }
/** {@inheritDoc} */ @Override public void setWriter(final Writer writer) { super.setWriter(writer); wayNodeWriter.setWriter(writer); tagWriter.setWriter(writer); }
@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; }
@Override protected void writeTagDetails(TagWriter tagWriter) throws JspException { tagWriter.writeAttribute("type", getInputType()); Object boundValue = getBoundValue(); Class valueType = getBindStatus().getValueType(); if (Boolean.class.equals(valueType) || boolean.class.equals(valueType)) { // the concrete type may not be a Boolean - can be String if (boundValue instanceof String) { boundValue = Boolean.valueOf((String) boundValue); } Boolean booleanValue = (boundValue != null ? (Boolean) boundValue : Boolean.FALSE); renderFromBoolean(booleanValue, tagWriter); } else { Object value = getValue(); if (value == null) { throw new IllegalArgumentException( "Attribute 'value' is required when binding to non-boolean values"); } Object resolvedValue = (value instanceof String ? evaluate("value", value) : value); renderFromValue(resolvedValue, tagWriter); } }
@Override public void emit(TagWriter writer) throws IOException { writer.startTag(tagName, attributeMap); if (!elementList.isEmpty()) { writer.indent(); for (Element element : elementList) { writer.newLine(); element.emit(writer); } writer.unindent(); writer.newLine(); writer.appendIndentation(); } endTag(writer); }
/** * Renders the '{@code input(radio)}' element with the configured {@link #setValue(Object) value}. * Marks the element as checked if the value matches the {@link #getValue bound value}. */ @Override protected int writeTagContent(TagWriter tagWriter) throws JspException { tagWriter.startTag("input"); String id = resolveId(); writeOptionalAttribute(tagWriter, "id", id); writeOptionalAttribute(tagWriter, "name", getName()); writeOptionalAttributes(tagWriter); writeTagDetails(tagWriter); tagWriter.endTag(); Object resolvedLabel = evaluate("label", getLabel()); if (resolvedLabel != null) { tagWriter.startTag("label"); tagWriter.writeAttribute("for", id); tagWriter.appendValue(convertToDisplayString(resolvedLabel)); tagWriter.endTag(); } return SKIP_BODY; }