Add HTTP method to RequestDataValueProcessor method
Issue: SPR-10041, SPR-10652
This commit is contained in:
parent
26fb880622
commit
4b22558a06
|
@ -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");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with 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.
|
* Invoked when a new form action is rendered.
|
||||||
* @param request the current request
|
* @param request the current request
|
||||||
* @param action the form action
|
* @param action the form action
|
||||||
|
* @param httpMethod the form HTTP method
|
||||||
* @return the action to use, possibly modified
|
* @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.
|
* Invoked when a form field value is rendered.
|
||||||
|
|
|
@ -346,8 +346,7 @@ public class FormTag extends AbstractHtmlElementTag {
|
||||||
tagWriter.startTag(FORM_TAG);
|
tagWriter.startTag(FORM_TAG);
|
||||||
writeDefaultAttributes(tagWriter);
|
writeDefaultAttributes(tagWriter);
|
||||||
tagWriter.writeAttribute(ACTION_ATTRIBUTE, resolveAction());
|
tagWriter.writeAttribute(ACTION_ATTRIBUTE, resolveAction());
|
||||||
writeOptionalAttribute(tagWriter, METHOD_ATTRIBUTE,
|
writeOptionalAttribute(tagWriter, METHOD_ATTRIBUTE, getHttpMethod());
|
||||||
isMethodBrowserSupported(getMethod()) ? getMethod() : DEFAULT_METHOD);
|
|
||||||
writeOptionalAttribute(tagWriter, TARGET_ATTRIBUTE, getTarget());
|
writeOptionalAttribute(tagWriter, TARGET_ATTRIBUTE, getTarget());
|
||||||
writeOptionalAttribute(tagWriter, ENCTYPE_ATTRIBUTE, getEnctype());
|
writeOptionalAttribute(tagWriter, ENCTYPE_ATTRIBUTE, getEnctype());
|
||||||
writeOptionalAttribute(tagWriter, ACCEPT_CHARSET_ATTRIBUTE, getAcceptCharset());
|
writeOptionalAttribute(tagWriter, ACCEPT_CHARSET_ATTRIBUTE, getAcceptCharset());
|
||||||
|
@ -382,6 +381,10 @@ public class FormTag extends AbstractHtmlElementTag {
|
||||||
return EVAL_BODY_INCLUDE;
|
return EVAL_BODY_INCLUDE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String getHttpMethod() {
|
||||||
|
return isMethodBrowserSupported(getMethod()) ? getMethod() : DEFAULT_METHOD;
|
||||||
|
}
|
||||||
|
|
||||||
private void assertHttpMethod(String method) {
|
private void assertHttpMethod(String method) {
|
||||||
for (HttpMethod httpMethod : HttpMethod.values()) {
|
for (HttpMethod httpMethod : HttpMethod.values()) {
|
||||||
if (httpMethod.name().equalsIgnoreCase(method)) {
|
if (httpMethod.name().equalsIgnoreCase(method)) {
|
||||||
|
@ -465,7 +468,7 @@ public class FormTag extends AbstractHtmlElementTag {
|
||||||
RequestDataValueProcessor processor = getRequestContext().getRequestDataValueProcessor();
|
RequestDataValueProcessor processor = getRequestContext().getRequestDataValueProcessor();
|
||||||
ServletRequest request = this.pageContext.getRequest();
|
ServletRequest request = this.pageContext.getRequest();
|
||||||
if ((processor != null) && (request instanceof HttpServletRequest)) {
|
if ((processor != null) && (request instanceof HttpServletRequest)) {
|
||||||
action = processor.processAction((HttpServletRequest) request, action);
|
action = processor.processAction((HttpServletRequest) request, action, getHttpMethod());
|
||||||
}
|
}
|
||||||
return action;
|
return action;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -20,8 +20,6 @@ import java.util.Map;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
import org.springframework.web.servlet.support.RequestDataValueProcessor;
|
|
||||||
|
|
||||||
public class RequestDataValueProcessorWrapper implements RequestDataValueProcessor {
|
public class RequestDataValueProcessorWrapper implements RequestDataValueProcessor {
|
||||||
|
|
||||||
private RequestDataValueProcessor processor;
|
private RequestDataValueProcessor processor;
|
||||||
|
@ -41,8 +39,8 @@ public class RequestDataValueProcessorWrapper implements RequestDataValueProcess
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String processAction(HttpServletRequest request, String action) {
|
public String processAction(HttpServletRequest request, String action, String httpMethod) {
|
||||||
return (this.processor != null) ? this.processor.processAction(request, action) : action;
|
return (this.processor != null) ? this.processor.processAction(request, action, httpMethod) : action;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -326,7 +326,7 @@ public class FormTagTests extends AbstractHtmlElementTagTests {
|
||||||
public void testRequestDataValueProcessorHooks() throws Exception {
|
public void testRequestDataValueProcessorHooks() throws Exception {
|
||||||
String action = "/my/form?foo=bar";
|
String action = "/my/form?foo=bar";
|
||||||
RequestDataValueProcessor processor = getMockRequestDataValueProcessor();
|
RequestDataValueProcessor processor = getMockRequestDataValueProcessor();
|
||||||
given(processor.processAction(this.request, action)).willReturn(action);
|
given(processor.processAction(this.request, action, "post")).willReturn(action);
|
||||||
given(processor.getExtraHiddenFields(this.request)).willReturn(Collections.singletonMap("key", "value"));
|
given(processor.getExtraHiddenFields(this.request)).willReturn(Collections.singletonMap("key", "value"));
|
||||||
|
|
||||||
this.tag.doStartTag();
|
this.tag.doStartTag();
|
||||||
|
|
Loading…
Reference in New Issue