/* * ============================================================================= * * Copyright (c) 2011-2016, The THYMELEAF team (http://www.thymeleaf.org) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * ============================================================================= */ package org.thymeleaf.standard.processor; import org.thymeleaf.templatemode.TemplateMode; /** * * @author Daniel Fernández * * @since 3.0.0 * */ public final class StandardRemovableAttributeTagProcessor extends AbstractStandardAttributeModifierTagProcessor { public static final int PRECEDENCE = 1000; // These attributes should be removed even if their value evaluates to null or empty string. // The reason why we don't let all these attributes to be processed by the default processor is that some other attribute // processors executing afterwards (e.g. th:field) might need attribute values already processed by these. public static final String[] ATTR_NAMES = new String[] { "abbr", "accept", "accept-charset", "accesskey", "align", "alt", "archive", "audio", "autocomplete", "axis", "background", "bgcolor", "border", "cellpadding", "cellspacing", "challenge", "charset", "cite", "class", "classid", "codebase", "codetype", "cols", "colspan", "compact", "content", "contenteditable", "contextmenu", "data", "datetime", "dir", "draggable", "dropzone", "enctype", "for", "form", "formaction", "formenctype", "formmethod", "formtarget", "frame", "frameborder", "headers", "height", "high", "hreflang", "hspace", "http-equiv", "icon", "id", "keytype", "kind", "label", "lang", "list", "longdesc", "low", "manifest", "marginheight", "marginwidth", "max", "maxlength", "media", "min", "optimum", "pattern", "placeholder", "poster", "preload", "radiogroup", "rel", "rev", "rows", "rowspan", "rules", "sandbox", "scheme", "scope", "scrolling", "size", "sizes", "span", "spellcheck", "standby", "style", "srclang", "start", "step", "summary", "tabindex", "target", "title", "usemap", "valuetype", "vspace", "width", "wrap" }; public StandardRemovableAttributeTagProcessor(final String dialectPrefix, final String attrName) { super(TemplateMode.HTML, dialectPrefix, attrName, PRECEDENCE, true); } }