Author: pbenedict
Date: Tue Jun 26 22:59:05 2007
New Revision: 551063

URL: http://svn.apache.org/viewvc?view=rev&rev=551063
Log:
STR-1175: Add scope

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/XhtmlTag.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?view=diff&rev=551063&r1=551062&r2=551063
==============================================================================
--- 
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
 Tue Jun 26 22:59:05 2007
@@ -797,11 +797,14 @@
      * Returns true if the custom tags are in XHTML mode.
      */
     public boolean isXhtml(PageContext pageContext) {
-        String xhtml =
-            (String) pageContext.getAttribute(Globals.XHTML_KEY,
-                PageContext.PAGE_SCOPE);
-
-        return "true".equalsIgnoreCase(xhtml);
+        String xhtml;
+        try {
+            xhtml = (String) lookup(pageContext, Globals.XHTML_KEY, null);
+            return "true".equalsIgnoreCase(xhtml);
+        } catch (JspException e) {
+            log.error("Failed xhtml lookup", e);
+            throw new RuntimeException(e);
+        }
     }
 
     /**

Modified: 
struts/struts1/trunk/taglib/src/main/java/org/apache/struts/taglib/html/XhtmlTag.java
URL: 
http://svn.apache.org/viewvc/struts/struts1/trunk/taglib/src/main/java/org/apache/struts/taglib/html/XhtmlTag.java?view=diff&rev=551063&r1=551062&r2=551063
==============================================================================
--- 
struts/struts1/trunk/taglib/src/main/java/org/apache/struts/taglib/html/XhtmlTag.java
 (original)
+++ 
struts/struts1/trunk/taglib/src/main/java/org/apache/struts/taglib/html/XhtmlTag.java
 Tue Jun 26 22:59:05 2007
@@ -20,7 +20,10 @@
  */
 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 javax.servlet.jsp.JspException;
 import javax.servlet.jsp.PageContext;
@@ -32,6 +35,17 @@
  * Example:<br/> &lt;html:xhtml/&gt; </p>
  */
 public class XhtmlTag extends TagSupport {
+    
+    /**
+     * Commons logging instance.
+     */
+    private static final Log log = LogFactory.getLog(XhtmlTag.class);
+
+    /**
+     * The scope within which to store the markup format.
+     */
+    private String scope;
+    
     /**
      * Constructor for XhtmlTag.
      */
@@ -43,9 +57,24 @@
      * @see javax.servlet.jsp.tagext.Tag#doEndTag()
      */
     public int doEndTag() throws JspException {
-        this.pageContext.setAttribute(Globals.XHTML_KEY, "true",
-            PageContext.PAGE_SCOPE);
-
+        int inScope = PageContext.PAGE_SCOPE;
+        try {
+            if (scope != null) {
+                inScope = TagUtils.getInstance().getScope(scope);
+            }
+        } catch (JspException e) {
+            log.warn("invalid scope name - defaulting to PAGE_SCOPE", e);
+        }
+        
+        this.pageContext.setAttribute(Globals.XHTML_KEY, "true", inScope);
         return EVAL_PAGE;
+    }
+
+    public String getScope() {
+        return this.scope;
+    }
+
+    public void setScope(String scope) {
+        this.scope = scope;
     }
 }

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?view=diff&rev=551063&r1=551062&r2=551063
==============================================================================
--- 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 
Tue Jun 26 22:59:05 2007
@@ -9565,16 +9565,28 @@
             Using this tag in a page tells all other html taglib tags
             to render themselves as XHTML 1.0.  This is useful
             when composing pages with JSP includes or Tiles. 
-            &lt;html:html xhtml="true"&gt; has a similar effect.  This
-            tag has no attributes; you use it like this: &lt;html:xhtml/&gt;.
+            &lt;html:html xhtml="true"&gt; has a similar effect.
           </p>
           <p>
             <strong>Note</strong>: Included pages do not inherit the rendering
-            style of the including page.  Each JSP fragment or Tile must use 
this
-            tag to render as XHTML.  
+            style of the including page by default. Without setting the 
+            <code>scope</code> attribute, which defaults to <code>page</code> 
+            scope, each JSP fragment or Tile must use this tag to render as 
+            XHTML.
           </p>
           ]]>
         </description>
+        <attribute>
+            <name>scope</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the variable scope searched to retrieve the rendering 
+      setting.  If not specified, the default is page scope.</p>
+      ]]>
+            </description>
+        </attribute>
     </tag>
 </taglib>
 


Reply via email to