Add HTTP method to RequestDataValueProcessor method
Issue: SPR-10041, SPR-10652
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2013 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -42,9 +42,10 @@ public interface RequestDataValueProcessor {
|
||||
* Invoked when a new form action is rendered.
|
||||
* @param request the current request
|
||||
* @param action the form action
|
||||
* @param httpMethod the form HTTP method
|
||||
* @return the action to use, possibly modified
|
||||
*/
|
||||
String processAction(HttpServletRequest request, String action);
|
||||
String processAction(HttpServletRequest request, String action, String httpMethod);
|
||||
|
||||
/**
|
||||
* Invoked when a form field value is rendered.
|
||||
|
||||
@@ -346,8 +346,7 @@ public class FormTag extends AbstractHtmlElementTag {
|
||||
tagWriter.startTag(FORM_TAG);
|
||||
writeDefaultAttributes(tagWriter);
|
||||
tagWriter.writeAttribute(ACTION_ATTRIBUTE, resolveAction());
|
||||
writeOptionalAttribute(tagWriter, METHOD_ATTRIBUTE,
|
||||
isMethodBrowserSupported(getMethod()) ? getMethod() : DEFAULT_METHOD);
|
||||
writeOptionalAttribute(tagWriter, METHOD_ATTRIBUTE, getHttpMethod());
|
||||
writeOptionalAttribute(tagWriter, TARGET_ATTRIBUTE, getTarget());
|
||||
writeOptionalAttribute(tagWriter, ENCTYPE_ATTRIBUTE, getEnctype());
|
||||
writeOptionalAttribute(tagWriter, ACCEPT_CHARSET_ATTRIBUTE, getAcceptCharset());
|
||||
@@ -382,6 +381,10 @@ public class FormTag extends AbstractHtmlElementTag {
|
||||
return EVAL_BODY_INCLUDE;
|
||||
}
|
||||
|
||||
private String getHttpMethod() {
|
||||
return isMethodBrowserSupported(getMethod()) ? getMethod() : DEFAULT_METHOD;
|
||||
}
|
||||
|
||||
private void assertHttpMethod(String method) {
|
||||
for (HttpMethod httpMethod : HttpMethod.values()) {
|
||||
if (httpMethod.name().equalsIgnoreCase(method)) {
|
||||
@@ -465,7 +468,7 @@ public class FormTag extends AbstractHtmlElementTag {
|
||||
RequestDataValueProcessor processor = getRequestContext().getRequestDataValueProcessor();
|
||||
ServletRequest request = this.pageContext.getRequest();
|
||||
if ((processor != null) && (request instanceof HttpServletRequest)) {
|
||||
action = processor.processAction((HttpServletRequest) request, action);
|
||||
action = processor.processAction((HttpServletRequest) request, action, getHttpMethod());
|
||||
}
|
||||
return action;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user