You are viewing a plain text version of this content. The canonical link for it is here.
Posted to taglibs-dev@jakarta.apache.org by sh...@apache.org on 2002/04/17 15:22:18 UTC
cvs commit: jakarta-taglibs/standard/src/org/apache/taglibs/standard/tag/rt/core RedirectTag.java UrlTag.java
shawn 02/04/17 06:22:18
Modified: standard/conf c-rt.tld c.tld
standard/src/org/apache/taglibs/standard/resources
Resources.properties
standard/src/org/apache/taglibs/standard/tag/common/core
RedirectSupport.java UrlSupport.java
standard/src/org/apache/taglibs/standard/tag/el/core
RedirectTag.java UrlTag.java
standard/src/org/apache/taglibs/standard/tag/rt/core
RedirectTag.java UrlTag.java
Log:
In PFD, URL tags
- normalize URLs (including page-relative URLs) against a context root
- have a 'context' attribute
Revision Changes Path
1.13 +10 -0 jakarta-taglibs/standard/conf/c-rt.tld
Index: c-rt.tld
===================================================================
RCS file: /home/cvs/jakarta-taglibs/standard/conf/c-rt.tld,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- c-rt.tld 17 Apr 2002 11:21:32 -0000 1.12
+++ c-rt.tld 17 Apr 2002 13:22:18 -0000 1.13
@@ -260,6 +260,11 @@
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
+ <attribute>
+ <name>context</name>
+ <required>false</required>
+ <rtexprvalue>true</rtexprvalue>
+ </attribute>
</tag>
<tag>
@@ -281,6 +286,11 @@
</attribute>
<attribute>
<name>value</name>
+ <required>false</required>
+ <rtexprvalue>true</rtexprvalue>
+ </attribute>
+ <attribute>
+ <name>context</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
1.15 +12 -0 jakarta-taglibs/standard/conf/c.tld
Index: c.tld
===================================================================
RCS file: /home/cvs/jakarta-taglibs/standard/conf/c.tld,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- c.tld 17 Apr 2002 02:53:35 -0000 1.14
+++ c.tld 17 Apr 2002 13:22:18 -0000 1.15
@@ -34,8 +34,10 @@
param:encode
param:name
param:value
+ redirect:context
redirect:url
set:value
+ url:context
url:value
when:test
</param-value>
@@ -306,6 +308,11 @@
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
+ <attribute>
+ <name>context</name>
+ <required>false</required>
+ <rtexprvalue>false</rtexprvalue>
+ </attribute>
</tag>
<tag>
@@ -371,6 +378,11 @@
</attribute>
<attribute>
<name>value</name>
+ <required>false</required>
+ <rtexprvalue>false</rtexprvalue>
+ </attribute>
+ <attribute>
+ <name>context</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
1.23 +2 -2 jakarta-taglibs/standard/src/org/apache/taglibs/standard/resources/Resources.properties
Index: Resources.properties
===================================================================
RCS file: /home/cvs/jakarta-taglibs/standard/src/org/apache/taglibs/standard/resources/Resources.properties,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- Resources.properties 16 Apr 2002 18:17:51 -0000 1.22
+++ Resources.properties 17 Apr 2002 13:22:18 -0000 1.23
@@ -37,8 +37,8 @@
Don't know how to iterate over supplied "items" in <forEach>
IMPORT_BAD_RELATIVE=\
- In <import>, when "context" attribute is specified, \
- values of both "context" and "url" must start with "/"
+ In URL tags, when the "context" attribute is specified, \
+ values of both "context" and "url" must start with "/".
IMPORT_REL_WITHOUT_HTTP=\
Relative <import> from non-HTTP request not allowed
1.2 +3 -1 jakarta-taglibs/standard/src/org/apache/taglibs/standard/tag/common/core/RedirectSupport.java
Index: RedirectSupport.java
===================================================================
RCS file: /home/cvs/jakarta-taglibs/standard/src/org/apache/taglibs/standard/tag/common/core/RedirectSupport.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- RedirectSupport.java 9 Mar 2002 00:17:14 -0000 1.1
+++ RedirectSupport.java 17 Apr 2002 13:22:18 -0000 1.2
@@ -77,6 +77,7 @@
// Protected state
protected String url; // 'url' attribute
+ protected String context; // 'context' attribute
//*********************************************************************
// Private state
@@ -136,7 +137,8 @@
String result; // the eventual result
// add (already encoded) parameters
- result = params.aggregateParams(url);
+ String baseUrl = UrlSupport.resolveUrl(url, context, pageContext);
+ result = params.aggregateParams(baseUrl);
// if the URL is relative, rewrite it with 'redirect' encoding rules
HttpServletResponse response =
1.3 +34 -1 jakarta-taglibs/standard/src/org/apache/taglibs/standard/tag/common/core/UrlSupport.java
Index: UrlSupport.java
===================================================================
RCS file: /home/cvs/jakarta-taglibs/standard/src/org/apache/taglibs/standard/tag/common/core/UrlSupport.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- UrlSupport.java 9 Mar 2002 00:12:31 -0000 1.2
+++ UrlSupport.java 17 Apr 2002 13:22:18 -0000 1.3
@@ -77,6 +77,7 @@
// Protected state
protected String value; // 'value' attribute
+ protected String context; // 'context' attribute
//*********************************************************************
// Private state
@@ -96,6 +97,7 @@
private void init() {
value = var = null;
params = null;
+ context = null;
scope = PageContext.PAGE_SCOPE;
}
@@ -136,7 +138,8 @@
String result; // the eventual result
// add (already encoded) parameters
- result = params.aggregateParams(value);
+ String baseUrl = resolveUrl(value, context, pageContext);
+ result = params.aggregateParams(baseUrl);
// if the URL is relative, rewrite it
if (!ImportSupport.isAbsoluteUrl(result)) {
@@ -163,4 +166,34 @@
public void release() {
init();
}
+
+ //*********************************************************************
+ // Utility methods
+
+ public static String resolveUrl(
+ String url, String context, PageContext pageContext)
+ throws JspException {
+ // don't touch absolute URLs
+ if (ImportSupport.isAbsoluteUrl(url))
+ return url;
+
+ // normalize relative URLs against a context root
+ HttpServletRequest request =
+ (HttpServletRequest) pageContext.getRequest();
+ if (context == null) {
+ if (!url.startsWith("/")) {
+ String page =
+ request.getContextPath() + request.getServletPath();
+ String dir = page.substring(0, page.lastIndexOf("/") + 1);
+ return (dir + url);
+ } else
+ return (request.getContextPath() + url);
+ } else {
+ if (!context.startsWith("/") || !url.startsWith("/"))
+ throw new JspTagException(
+ Resources.getMessage("IMPORT_BAD_RELATIVE"));
+ return (context + url);
+ }
+ }
+
}
1.2 +9 -2 jakarta-taglibs/standard/src/org/apache/taglibs/standard/tag/el/core/RedirectTag.java
Index: RedirectTag.java
===================================================================
RCS file: /home/cvs/jakarta-taglibs/standard/src/org/apache/taglibs/standard/tag/el/core/RedirectTag.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- RedirectTag.java 9 Mar 2002 00:17:14 -0000 1.1
+++ RedirectTag.java 17 Apr 2002 13:22:18 -0000 1.2
@@ -72,6 +72,7 @@
// 'Private' state (implementation details)
private String url_; // stores EL-based property
+ private String context_; // stores EL-based property
//*********************************************************************
@@ -116,13 +117,17 @@
this.url_ = url_;
}
+ public void setContext(String context_) {
+ this.context_ = context_;
+ }
+
//*********************************************************************
// Private (utility) methods
// (re)initializes state (during release() or construction)
private void init() {
// null implies "no expression"
- url_ = null;
+ url_ = context_ = null;
}
/* Evaluates expressions as necessary */
@@ -136,6 +141,8 @@
*/
url = (String) ExpressionUtil.evalNotNull(
- "import", "url", url_, String.class, this, pageContext);
+ "redirect", "url", url_, String.class, this, pageContext);
+ context = (String) ExpressionUtil.evalNotNull(
+ "redirect", "context", context_, String.class, this, pageContext);
}
}
1.2 +9 -1 jakarta-taglibs/standard/src/org/apache/taglibs/standard/tag/el/core/UrlTag.java
Index: UrlTag.java
===================================================================
RCS file: /home/cvs/jakarta-taglibs/standard/src/org/apache/taglibs/standard/tag/el/core/UrlTag.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- UrlTag.java 8 Mar 2002 22:14:33 -0000 1.1
+++ UrlTag.java 17 Apr 2002 13:22:18 -0000 1.2
@@ -72,6 +72,7 @@
// 'Private' state (implementation details)
private String value_; // stores EL-based property
+ private String context_; // stores EL-based property
//*********************************************************************
@@ -116,6 +117,11 @@
this.value_ = value_;
}
+ public void setContext(String context_) {
+ this.context_ = context_;
+ }
+
+
//*********************************************************************
// Private (utility) methods
@@ -136,6 +142,8 @@
*/
value = (String) ExpressionUtil.evalNotNull(
- "import", "value", value_, String.class, this, pageContext);
+ "url", "value", value_, String.class, this, pageContext);
+ context = (String) ExpressionUtil.evalNotNull(
+ "url", "context", context_, String.class, this, pageContext);
}
}
1.2 +5 -0 jakarta-taglibs/standard/src/org/apache/taglibs/standard/tag/rt/core/RedirectTag.java
Index: RedirectTag.java
===================================================================
RCS file: /home/cvs/jakarta-taglibs/standard/src/org/apache/taglibs/standard/tag/rt/core/RedirectTag.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- RedirectTag.java 9 Mar 2002 00:17:14 -0000 1.1
+++ RedirectTag.java 17 Apr 2002 13:22:18 -0000 1.2
@@ -76,4 +76,9 @@
this.url = url;
}
+ // for tag attribute
+ public void setContext(String context) throws JspTagException {
+ this.context = context;
+ }
+
}
1.2 +5 -0 jakarta-taglibs/standard/src/org/apache/taglibs/standard/tag/rt/core/UrlTag.java
Index: UrlTag.java
===================================================================
RCS file: /home/cvs/jakarta-taglibs/standard/src/org/apache/taglibs/standard/tag/rt/core/UrlTag.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- UrlTag.java 8 Mar 2002 22:14:33 -0000 1.1
+++ UrlTag.java 17 Apr 2002 13:22:18 -0000 1.2
@@ -76,4 +76,9 @@
this.value = value;
}
+ // for tag attribute
+ public void setContext(String context) throws JspTagException {
+ this.context = context;
+ }
+
}
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>