husted 2002/12/29 09:00:16
Modified: src/share/org/apache/struts/taglib/html LinkTag.java
FormTag.java
Log:
Apply patch for PR #13645 contributed by James Turner.
Revision Changes Path
1.28 +24 -7
jakarta-struts/src/share/org/apache/struts/taglib/html/LinkTag.java
Index: LinkTag.java
===================================================================
RCS file:
/home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/html/LinkTag.java,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -r1.27 -r1.28
--- LinkTag.java 23 Sep 2002 05:13:43 -0000 1.27
+++ LinkTag.java 29 Dec 2002 17:00:15 -0000 1.28
@@ -76,6 +76,7 @@
* Generate a URL-encoded hyperlink to the specified URI.
*
* @author Craig R. McClanahan
+ * @author James Turner
* @version $Revision$ $Date$
*/
@@ -187,9 +188,24 @@
/**
- * The single-parameter request parameter name to generate.
+ * The module-relative action (beginning with a slash) which will be
+ * called by this link
*/
- protected String paramId = null;
+ protected String action = null;
+
+ public String getAction() {
+ return (this.action);
+ }
+
+ public void setAction(String action) {
+ this.action = action;
+ }
+
+
+ /**
+ * The single-parameter request parameter name to generate.
+ */
+ protected String paramId = null;
public String getParamId() {
return (this.paramId);
@@ -417,6 +433,7 @@
linkName = null;
name = null;
page = null;
+ action = null;
paramId = null;
paramName = null;
paramProperty = null;
@@ -476,7 +493,7 @@
String url = null;
try {
url = RequestUtils.computeURL(pageContext, forward, href,
- page, params, anchor, false);
+ page, action, params, anchor, false);
} catch (MalformedURLException e) {
RequestUtils.saveException(pageContext, e);
throw new JspException
1.41 +15 -95
jakarta-struts/src/share/org/apache/struts/taglib/html/FormTag.java
Index: FormTag.java
===================================================================
RCS file:
/home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/html/FormTag.java,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -r1.40 -r1.41
--- FormTag.java 13 Dec 2002 02:36:47 -0000 1.40
+++ FormTag.java 29 Dec 2002 17:00:15 -0000 1.41
@@ -86,6 +86,7 @@
*
* @author Craig R. McClanahan
* @author Martin Cooper
+ * @author James Turner
* @version $Revision$ $Date$
*/
@@ -115,8 +116,8 @@
/**
* The index in the focus field array to receive focus. This only applies if
the field
- * given in the focus attribute is actually an array of fields. This allows a
specific
- * field in a radio button array to receive focus while still allowing indexed
field
+ * given in the focus attribute is actually an array of fields. This allows a
specific
+ * field in a radio button array to receive focus while still allowing indexed
field
* names like "myRadioButtonField[1]" to be passed in the focus attribute.
* @since Struts 1.1
*/
@@ -504,13 +505,13 @@
results.append(" name=\"");
results.append(beanName);
results.append("\"");
- results.append(" method=\"");
- results.append(method == null ? "post" : method);
- results.append("\" action=\"");
- results.append(response.encodeURL(getActionMappingURL()));
- results.append("\"");
- if (styleClass != null) {
- results.append(" class=\"");
+ results.append(" method=\"");
+ results.append(method == null ? "post" : method);
+ results.append("\" action=\"");
+ results.append(response.encodeURL(RequestUtils.getActionMappingURL(action,
pageContext)));
+ results.append("\"");
+ if (styleClass != null) {
+ results.append(" class=\"");
results.append(styleClass);
results.append("\"");
}
@@ -695,87 +696,6 @@
// ------------------------------------------------------ Protected Methods
- /**
- * Return the form action converted into an action mapping path. The
- * value of the <code>action</code> property is manipulated as follows in
- * computing the name of the requested mapping:
- * <ul>
- * <li>Any filename extension is removed (on the theory that extension
- * mapping is being used to select the controller servlet).</li>
- * <li>If the resulting value does not start with a slash, then a
- * slash is prepended.</li>
- * </ul>
- */
- protected String getActionMappingName() {
-
- String value = action;
- int question = action.indexOf("?");
- if (question >= 0) {
- value = value.substring(0, question);
- }
- int slash = value.lastIndexOf("/");
- int period = value.lastIndexOf(".");
- if ((period >= 0) && (period > slash)) {
- value = value.substring(0, period);
- }
- if (value.startsWith("/")) {
- return (value);
- } else {
- return ("/" + value);
- }
-
- }
-
- /**
- * Return the form action converted into a server-relative URL.
- */
- protected String getActionMappingURL() {
-
- HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
- StringBuffer value = new StringBuffer(request.getContextPath());
- ModuleConfig config =
- (ModuleConfig)
pageContext.getRequest().getAttribute(Globals.MODULE_KEY);
- if (config != null) {
- value.append(config.getPrefix());
- }
-
- // Use our servlet mapping, if one is specified
- String servletMapping =
- (String) pageContext.getAttribute(Globals.SERVLET_KEY,
PageContext.APPLICATION_SCOPE);
- if (servletMapping != null) {
- String queryString = null;
- int question = action.indexOf("?");
- if (question >= 0) {
- queryString = action.substring(question);
- }
- String actionMapping = getActionMappingName();
- if (servletMapping.startsWith("*.")) {
- value.append(actionMapping);
- value.append(servletMapping.substring(1));
- } else if (servletMapping.endsWith("/*")) {
- value.append(servletMapping.substring(0, servletMapping.length() -
2));
- value.append(actionMapping);
- } else if (servletMapping.equals("/")) {
- value.append(actionMapping);
- }
- if (queryString != null) {
- value.append(queryString);
- }
- }
-
- // Otherwise, assume extension mapping is in use and extension is
- // already included in the action property
- else {
- if (!action.startsWith("/")) {
- value.append("/");
- }
- value.append(action);
- }
-
- // Return the completed value
- return (value.toString());
-
- }
/**
* Look up values for the <code>name</code>, <code>scope</code>, and
@@ -798,7 +718,7 @@
Globals.ACTION_SERVLET_KEY);
// Look up the action mapping we will be submitting to
- String mappingName = getActionMappingName();
+ String mappingName = RequestUtils.getActionMappingName(action);
mapping = (ActionMapping) moduleConfig.findActionConfig(mappingName);
if (mapping == null) {
JspException e = new
JspException(messages.getMessage("formTag.mapping", mappingName));
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>