You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by pb...@apache.org on 2008/06/08 23:28:15 UTC
svn commit: r664559 - in /struts/struts1/trunk/taglib/src/main:
java/org/apache/struts/taglib/TagUtils.java
java/org/apache/struts/taglib/html/HtmlTag.java
resources/META-INF/tld/struts-html.tld
Author: pbenedict
Date: Sun Jun 8 14:28:14 2008
New Revision: 664559
URL: http://svn.apache.org/viewvc?rev=664559&view=rev
Log:
STR-2740: Support XHTML versions
Modified:
struts/struts1/trunk/taglib/src/main/java/org/apache/struts/taglib/TagUtils.java
struts/struts1/trunk/taglib/src/main/java/org/apache/struts/taglib/html/HtmlTag.java
struts/struts1/trunk/taglib/src/main/resources/META-INF/tld/struts-html.tld
Modified: struts/struts1/trunk/taglib/src/main/java/org/apache/struts/taglib/TagUtils.java
URL: http://svn.apache.org/viewvc/struts/struts1/trunk/taglib/src/main/java/org/apache/struts/taglib/TagUtils.java?rev=664559&r1=664558&r2=664559&view=diff
==============================================================================
--- struts/struts1/trunk/taglib/src/main/java/org/apache/struts/taglib/TagUtils.java (original)
+++ struts/struts1/trunk/taglib/src/main/java/org/apache/struts/taglib/TagUtils.java Sun Jun 8 14:28:14 2008
@@ -48,6 +48,8 @@
import java.lang.reflect.InvocationTargetException;
+import java.math.BigDecimal;
+
import java.net.MalformedURLException;
import java.util.HashMap;
@@ -62,7 +64,44 @@
* @since Struts 1.2
*/
public class TagUtils {
- /**
+
+ /**
+ * Constant for
+ * <a href="http://www.w3.org/TR/xhtml1/#docconf">XHTML 1.0</a>
+ * conformance.
+ *
+ * @since Struts 1.4
+ */
+ public static final BigDecimal XHTML_1_0 = new BigDecimal("1.0");
+
+ /**
+ * Constant for
+ * <a href="http://www.w3.org/TR/xhtml11/conformance.html">XHTML 1.1</a>
+ * conformance.
+ *
+ * @since Struts 1.4
+ */
+ public static final BigDecimal XHTML_1_1 = new BigDecimal("1.1");
+
+ /**
+ * Constant for
+ * <a href="http://www.w3.org/TR/xhtml2/conformance.html#s_conform">XHTML
+ * 2.0</a> conformance.
+ *
+ * @since Struts 1.4
+ */
+ public static final BigDecimal XHTML_2_0 = new BigDecimal("2.0");
+
+ /**
+ * Constant for
+ * <a href="http://www.w3.org/html/wg/html5/#terminology">XHTML 5.0</a>
+ * conformance.
+ *
+ * @since Struts 1.4
+ */
+ public static final BigDecimal XHTML_5_0 = new BigDecimal("5.0");
+
+ /**
* The Singleton instance.
* @since 1.3.5 Changed to non-final so it may be overridden, use at your own risk (you've been warned!!)
*/
Modified: struts/struts1/trunk/taglib/src/main/java/org/apache/struts/taglib/html/HtmlTag.java
URL: http://svn.apache.org/viewvc/struts/struts1/trunk/taglib/src/main/java/org/apache/struts/taglib/html/HtmlTag.java?rev=664559&r1=664558&r2=664559&view=diff
==============================================================================
--- struts/struts1/trunk/taglib/src/main/java/org/apache/struts/taglib/html/HtmlTag.java (original)
+++ struts/struts1/trunk/taglib/src/main/java/org/apache/struts/taglib/html/HtmlTag.java Sun Jun 8 14:28:14 2008
@@ -20,6 +20,8 @@
*/
package org.apache.struts.taglib.html;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.struts.Globals;
import org.apache.struts.taglib.TagUtils;
import org.apache.struts.util.MessageResources;
@@ -28,6 +30,7 @@
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.TagSupport;
+import java.math.BigDecimal;
import java.util.Locale;
/**
@@ -41,6 +44,11 @@
// ------------------------------------------------------------- Properties
/**
+ * Commons Logging instance.
+ */
+ private static Log log = LogFactory.getLog(HtmlTag.class);
+
+ /**
* The message resources for this package.
*/
protected static MessageResources messages =
@@ -51,6 +59,13 @@
* Are we rendering an xhtml page?
*/
protected boolean xhtml = false;
+
+ /**
+ * What version of XHTML is being rendered?
+ *
+ * @since Struts 1.4
+ */
+ private BigDecimal xhtmlVersion = XHTML_1_0;
/**
* Are we rendering a lang attribute?
@@ -66,6 +81,18 @@
public void setXhtml(boolean xhtml) {
this.xhtml = xhtml;
}
+
+ public String getXhtmlVersion() {
+ return this.xhtmlVersion.toString();
+ }
+
+ public void setXhtmlVersion(String xhtmlVersion) {
+ if (xhtmlVersion != null) {
+ this.xhtmlVersion = new BigDecimal(xhtmlVersion);
+ } else {
+ this.xhtmlVersion = XHTML_1_0;
+ }
+ }
/**
* Returns true if the tag should render a lang attribute.
@@ -117,23 +144,53 @@
boolean validLanguage = isValidRfc2616(language);
boolean validCountry = isValidRfc2616(country);
+ // XHTML document conformance
if (this.xhtml) {
this.pageContext.setAttribute(Globals.XHTML_KEY, "true",
PageContext.PAGE_SCOPE);
+ this.pageContext.setAttribute(Globals.XHTML_VERSION_KEY,
+ xhtmlVersion, PageContext.REQUEST_SCOPE);
- sb.append(" xmlns=\"http://www.w3.org/1999/xhtml\"");
+ // 1.1
+ if (xhtmlVersion.equals(TagUtils.XHTML_1_1)) {
+ sb.append(" xmlns=\"http://www.w3.org/1999/xhtml\"");
+ sb.append(" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"");
+ sb.append(" xsi:schemaLocation=\"http://www.w3.org/MarkUp/SCHEMA/xhtml11.xsd\"");
+ }
+ // 2.0
+ else if (xhtmlVersion.equals(TagUtils.XHTML_2_0)) {
+ sb.append(" xmlns=\"http://www.w3.org/2002/06/xhtml2/\"");
+ sb.append(" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"");
+ sb.append(" xsi:schemaLocation=\"http://www.w3.org/2002/06/xhtml2/ http://www.w3.org/MarkUp/SCHEMA/xhtml2.xsd\"");
+ }
+ // 5.0
+ else if (xhtmlVersion.equals(TagUtils.XHTML_5_0)) {
+ sb.append(" xmlns=\"http://www.w3.org/1999/xhtml\"");
+ }
+ // 1.0/Default
+ else {
+ if (!xhtmlVersion.equals(TagUtils.XHTML_1_0)) {
+ log.warn("Defaulting to XHTML 1.0. Unknown version: " + xhtmlVersion);
+ xhtmlVersion = TagUtils.XHTML_1_0;
+ }
+ sb.append(" xmlns=\"http://www.w3.org/1999/xhtml\"");
+ }
}
- if ((this.lang || this.xhtml) && validLanguage) {
- sb.append(" lang=\"");
- sb.append(language);
+ // If language is specified, output the attribute
+ // unless XHTML is version >= 1.1
+ if (this.lang && validLanguage) {
+ if (!this.xhtml || (xhtmlVersion.compareTo(XHTML_1_1) < 0)) {
+ sb.append(" lang=\"");
+ sb.append(language);
+
+ if (validCountry) {
+ sb.append("-");
+ sb.append(country);
+ }
- if (validCountry) {
- sb.append("-");
- sb.append(country);
- }
-
- sb.append("\"");
+ sb.append("\"");
+ }
}
if (this.xhtml && validLanguage) {
Modified: struts/struts1/trunk/taglib/src/main/resources/META-INF/tld/struts-html.tld
URL: http://svn.apache.org/viewvc/struts/struts1/trunk/taglib/src/main/resources/META-INF/tld/struts-html.tld?rev=664559&r1=664558&r2=664559&view=diff
==============================================================================
--- struts/struts1/trunk/taglib/src/main/resources/META-INF/tld/struts-html.tld (original)
+++ struts/struts1/trunk/taglib/src/main/resources/META-INF/tld/struts-html.tld Sun Jun 8 14:28:14 2008
@@ -2999,6 +2999,20 @@
]]>
</description>
</attribute>
+ <attribute>
+ <name>xhtmlVersion</name>
+ <required>false</required>
+ <rtexprvalue>true</rtexprvalue>
+ <description>
+ <![CDATA[
+ <p>Sets the version of XHTML to render in the String form
+ MAJOR.MINOR. The default is "1.0" when not specified.</p>
+
+ <dl><dt><b>Since:</b></dt>
+ <dd>Struts 1.4</dd></dl>
+ ]]>
+ </description>
+ </attribute>
</tag>
<tag>
<name>image</name>