Author: mrdon
Date: Wed Apr 27 21:55:17 2005
New Revision: 165098

URL: http://svn.apache.org/viewcvs?rev=165098&view=rev
Log:
Adding attribute 'ref' to html base tag to allow different base values:
 "page" - Base value of the jsp path (default)
 "site" - Base value of the context path

PR: 33426

Modified:
    struts/taglib/trunk/doc/userGuide/struts-html.xml
    struts/taglib/trunk/src/java/org/apache/struts/taglib/html/BaseTag.java
    
struts/taglib/trunk/src/test-cactus/org/apache/struts/taglib/html/TestBaseTag.java
    struts/taglib/trunk/src/webapp/org/apache/struts/taglib/html/TestBaseTag.jsp

Modified: struts/taglib/trunk/doc/userGuide/struts-html.xml
URL: 
http://svn.apache.org/viewcvs/struts/taglib/trunk/doc/userGuide/struts-html.xml?rev=165098&r1=165097&r2=165098&view=diff
==============================================================================
--- struts/taglib/trunk/doc/userGuide/struts-html.xml (original)
+++ struts/taglib/trunk/doc/userGuide/struts-html.xml Wed Apr 27 21:55:17 2005
@@ -66,6 +66,19 @@
               <p>The server name to use instead of request.getServerName().</p>
             </info>
           </attribute>
+          <attribute>
+            <name>ref</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <info>
+              <p>The reference from which the base uri will created.  Possible 
values are:
+              </p>
+              <ul>
+                <li><code>page</code> - The base uri will be the jsp page 
location. (default)</li>
+                <li><code>site</code> - The base uri will be the application 
context path.</li>
+              </ul>
+            </info>
+          </attribute>
 
         </tag>
 

Modified: 
struts/taglib/trunk/src/java/org/apache/struts/taglib/html/BaseTag.java
URL: 
http://svn.apache.org/viewcvs/struts/taglib/trunk/src/java/org/apache/struts/taglib/html/BaseTag.java?rev=165098&r1=165097&r2=165098&view=diff
==============================================================================
--- struts/taglib/trunk/src/java/org/apache/struts/taglib/html/BaseTag.java 
(original)
+++ struts/taglib/trunk/src/java/org/apache/struts/taglib/html/BaseTag.java Wed 
Apr 27 21:55:17 2005
@@ -45,6 +45,9 @@
 
 public class BaseTag extends TagSupport {
 
+    protected final String REF_SITE = "site";
+    protected final String REF_PAGE = "page";
+    
     /**
      * The message resources for this package.
      */
@@ -61,6 +64,37 @@
      */
     protected String target = null;
 
+    /**
+     * The reference to which the base will created.
+     */
+    protected String ref = REF_PAGE;
+    
+    /**
+     * Gets the reference to which the base will be created
+     */
+    public String getRef() {
+      return (this.ref);
+    }
+    
+    /**
+     * Sets the reference to which the base will be created.
+     *
+     * @param ref Either "page" to render the base as the jsp path 
+     *            located, or "site" as the application's context
+     */
+    public void setRef(String ref) {
+        if (ref == null) {
+            throw new IllegalArgumentException("Ref attribute cannot be null");
+        }
+        ref = ref.toLowerCase();
+        if (ref.equals(REF_PAGE) || ref.equals(REF_SITE)) {
+            this.ref = ref;
+        } else {
+            throw new IllegalArgumentException("Ref attribute must either be "+
+                "'" + REF_PAGE + "' or '" + REF_SITE + "'");
+        }        
+    }
+    
     public String getTarget() {
         return (this.target);
     }
@@ -128,8 +162,14 @@
         String uri) {
             
         StringBuffer tag = new StringBuffer("<base href=\"");
-        
tag.append(RequestUtils.createServerUriStringBuffer(scheme,serverName,port,uri).toString());
-
+        if(ref.equals(REF_SITE)) {
+            StringBuffer contextBase = new 
StringBuffer(((HttpServletRequest)pageContext.getRequest()).getContextPath()); 
+            contextBase.append("/");
+            
tag.append(RequestUtils.createServerUriStringBuffer(scheme,serverName,port,contextBase.toString()).toString());
+        }
+        else {
+            
tag.append(RequestUtils.createServerUriStringBuffer(scheme,serverName,port,uri).toString());
+        }
         tag.append("\"");
         
         if (this.target != null) {

Modified: 
struts/taglib/trunk/src/test-cactus/org/apache/struts/taglib/html/TestBaseTag.java
URL: 
http://svn.apache.org/viewcvs/struts/taglib/trunk/src/test-cactus/org/apache/struts/taglib/html/TestBaseTag.java?rev=165098&r1=165097&r2=165098&view=diff
==============================================================================
--- 
struts/taglib/trunk/src/test-cactus/org/apache/struts/taglib/html/TestBaseTag.java
 (original)
+++ 
struts/taglib/trunk/src/test-cactus/org/apache/struts/taglib/html/TestBaseTag.java
 Wed Apr 27 21:55:17 2005
@@ -68,18 +68,22 @@
      */
     public void testBase() throws Exception {
         runMyTest("testBase");
-        }
+    }
 
     public void testBaseTarget() throws Exception {
         runMyTest("testBaseTarget");
-        }
+    }
+
+    public void testBaseRef() throws Exception {
+        runMyTest("testBaseRef");
+    }
 
     public void testBaseServer() throws Exception {
         runMyTest("testBaseServer");
-        }
+    }
 
     public void testBaseServerTarget() throws Exception {
         runMyTest("testBaseServerTarget");
-        }
+    }
 
 }

Modified: 
struts/taglib/trunk/src/webapp/org/apache/struts/taglib/html/TestBaseTag.jsp
URL: 
http://svn.apache.org/viewcvs/struts/taglib/trunk/src/webapp/org/apache/struts/taglib/html/TestBaseTag.jsp?rev=165098&r1=165097&r2=165098&view=diff
==============================================================================
--- 
struts/taglib/trunk/src/webapp/org/apache/struts/taglib/html/TestBaseTag.jsp 
(original)
+++ 
struts/taglib/trunk/src/webapp/org/apache/struts/taglib/html/TestBaseTag.jsp 
Wed Apr 27 21:55:17 2005
@@ -35,6 +35,15 @@
        </bean:define>
 </logic:equal>
 
+<logic:equal name="runTest" value="testBaseRef">
+       <bean:define id="TEST_RESULTS" toScope="page">
+               <html:base ref="site"/>
+       </bean:define>
+       <bean:define id="EXPECTED_RESULTS" toScope="page">
+               <base href="http://<%=server%><%=portString%><%= 
request.getContextPath()  %>/">
+       </bean:define>
+</logic:equal>
+
 <logic:equal name="runTest" value="testBaseServer">
        <bean:define id="TEST_RESULTS" toScope="page">
                <html:base server="www.my-server-name.com"/>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to