@Override public Map<String, String> getExtraHiddenFields(HttpServletRequest request) { return (this.processor != null) ? this.processor.getExtraHiddenFields(request) : null; }
@Override public String processFormFieldValue(HttpServletRequest request, String name, String value, String type) { return (this.processor != null) ? this.processor.processFormFieldValue(request, name, value, type) : value; }
@Override public String processUrl(HttpServletRequest request, String url) { return (this.processor != null) ? this.processor.processUrl(request, url) : url; }
@Test public void requestDataValueProcessorHooks() throws Exception { String action = "/my/form?foo=bar"; RequestDataValueProcessor processor = getMockRequestDataValueProcessor(); given(processor.processAction(this.request, action, "post")).willReturn(action); given(processor.getExtraHiddenFields(this.request)).willReturn(Collections.singletonMap("key", "value")); this.tag.doStartTag(); this.tag.doEndTag(); this.tag.doFinally(); String output = getOutput(); assertEquals("<div>\n<input type=\"hidden\" name=\"key\" value=\"value\" />\n</div>", getInputTag(output)); assertFormTagOpened(output); assertFormTagClosed(output); }
@Override public String processAction(HttpServletRequest request, String action, String httpMethod) { return (this.processor != null) ? this.processor.processAction(request, action, httpMethod) : action; }
/** * Process the action through a {@link RequestDataValueProcessor} instance * if one is configured or otherwise returns the action unmodified. */ private String processAction(String action) { RequestDataValueProcessor processor = getRequestContext().getRequestDataValueProcessor(); ServletRequest request = this.pageContext.getRequest(); if (processor != null && request instanceof HttpServletRequest) { action = processor.processAction((HttpServletRequest) request, action, getHttpMethod()); } return action; }
@Override public int doEndTag() throws JspException { String url = createUrl(); RequestDataValueProcessor processor = getRequestContext().getRequestDataValueProcessor(); ServletRequest request = this.pageContext.getRequest(); if ((processor != null) && (request instanceof HttpServletRequest)) { url = processor.processUrl((HttpServletRequest) request, url); } if (this.var == null) { // print the url to the writer try { this.pageContext.getOut().print(url); } catch (IOException ex) { throw new JspException(ex); } } else { // store the url as a variable this.pageContext.setAttribute(this.var, url, this.scope); } return EVAL_PAGE; }
/** * Closes the '{@code form}' block tag and removes the form object name * from the {@link javax.servlet.jsp.PageContext}. */ @Override public int doEndTag() throws JspException { RequestDataValueProcessor processor = getRequestContext().getRequestDataValueProcessor(); ServletRequest request = this.pageContext.getRequest(); if (processor != null && request instanceof HttpServletRequest) { writeHiddenFields(processor.getExtraHiddenFields((HttpServletRequest) request)); } Assert.state(this.tagWriter != null, "No TagWriter set"); this.tagWriter.endTag(); return EVAL_PAGE; }
/** * Process the given form field through a {@link RequestDataValueProcessor} * instance if one is configured or otherwise returns the same value. */ protected final String processFieldValue(@Nullable String name, String value, String type) { RequestDataValueProcessor processor = getRequestContext().getRequestDataValueProcessor(); ServletRequest request = this.pageContext.getRequest(); if (processor != null && request instanceof HttpServletRequest) { value = processor.processFormFieldValue((HttpServletRequest) request, name, value, type); } return value; }
/** * Process the action through a {@link RequestDataValueProcessor} instance * if one is configured or otherwise returns the action unmodified. */ private String processAction(String action) { RequestDataValueProcessor processor = getRequestContext().getRequestDataValueProcessor(); ServletRequest request = this.pageContext.getRequest(); if (processor != null && request instanceof HttpServletRequest) { action = processor.processAction((HttpServletRequest) request, action, getHttpMethod()); } return action; }
/** * Find the registered {@link RequestDataValueProcessor}, if any, and allow * it to update the redirect target URL. * @param targetUrl the given redirect URL * @return the updated URL or the same as URL as the one passed in */ protected String updateTargetUrl(String targetUrl, Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) { WebApplicationContext wac = getWebApplicationContext(); if (wac == null) { wac = RequestContextUtils.findWebApplicationContext(request, getServletContext()); } if (wac != null && wac.containsBean(RequestContextUtils.REQUEST_DATA_VALUE_PROCESSOR_BEAN_NAME)) { RequestDataValueProcessor processor = wac.getBean( RequestContextUtils.REQUEST_DATA_VALUE_PROCESSOR_BEAN_NAME, RequestDataValueProcessor.class); return processor.processUrl(request, targetUrl); } return targetUrl; }
/** * Closes the '{@code form}' block tag and removes the form object name * from the {@link javax.servlet.jsp.PageContext}. */ @Override public int doEndTag() throws JspException { RequestDataValueProcessor processor = getRequestContext().getRequestDataValueProcessor(); ServletRequest request = this.pageContext.getRequest(); if (processor != null && request instanceof HttpServletRequest) { writeHiddenFields(processor.getExtraHiddenFields((HttpServletRequest) request)); } Assert.state(this.tagWriter != null, "No TagWriter set"); this.tagWriter.endTag(); return EVAL_PAGE; }
/** * Process the given form field through a {@link RequestDataValueProcessor} * instance if one is configured or otherwise returns the same value. */ protected final String processFieldValue(@Nullable String name, String value, String type) { RequestDataValueProcessor processor = getRequestContext().getRequestDataValueProcessor(); ServletRequest request = this.pageContext.getRequest(); if (processor != null && request instanceof HttpServletRequest) { value = processor.processFormFieldValue((HttpServletRequest) request, name, value, type); } return value; }
@Override public String processAction(final String action, final String httpMethod) { if (this.requestDataValueProcessor == null) { // The presence of a Request Data Value Processor is optional return action; } return this.requestDataValueProcessor.processAction(this.httpServletRequest, action, httpMethod); }
@Override public int doEndTag() throws JspException { String url = createUrl(); RequestDataValueProcessor processor = getRequestContext().getRequestDataValueProcessor(); ServletRequest request = this.pageContext.getRequest(); if ((processor != null) && (request instanceof HttpServletRequest)) { url = processor.processUrl((HttpServletRequest) request, url); } if (this.var == null) { // print the url to the writer try { this.pageContext.getOut().print(url); } catch (IOException ex) { throw new JspException(ex); } } else { // store the url as a variable this.pageContext.setAttribute(this.var, url, this.scope); } return EVAL_PAGE; }
@Override public Map<String, String> getExtraHiddenFields() { if (this.requestDataValueProcessor == null) { // The presence of a Request Data Value Processor is optional return null; } return this.requestDataValueProcessor.getExtraHiddenFields(this.httpServletRequest); }
@Override public String processFormFieldValue(final String name, final String value, final String type) { if (this.requestDataValueProcessor == null) { // The presence of a Request Data Value Processor is optional return value; } return this.requestDataValueProcessor.processFormFieldValue(this.httpServletRequest, name, value, type); }
public String processAction( final RequestContext requestContext, final HttpServletRequest request, final String action, final String httpMethod) { final RequestDataValueProcessor processor = requestContext.getRequestDataValueProcessor(); if (processor == null) { return action; } // The "httpMethod" argument is ignored as of 3.1 and 3.2, but will be used in Spring 4.0 return processor.processAction(request, action); }
/** * Find the registered {@link RequestDataValueProcessor}, if any, and allow * it to update the redirect target URL. * @param targetUrl the given redirect URL * @return the updated URL or the same as URL as the one passed in */ protected String updateTargetUrl(String targetUrl, Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) { WebApplicationContext wac = getWebApplicationContext(); if (wac == null) { wac = RequestContextUtils.findWebApplicationContext(request, getServletContext()); } if (wac != null && wac.containsBean(RequestContextUtils.REQUEST_DATA_VALUE_PROCESSOR_BEAN_NAME)) { RequestDataValueProcessor processor = wac.getBean( RequestContextUtils.REQUEST_DATA_VALUE_PROCESSOR_BEAN_NAME, RequestDataValueProcessor.class); return processor.processUrl(request, targetUrl); } return targetUrl; }
/** * Get extra hidden fields from the inner {@link RequestDataValueProcessor}. * * @param request request object * @return hidden field name/value */ protected final Map<String, String> getInnerExtraHiddenFields(final HttpServletRequest request) { Map<String, String> extraFields = new HashMap<String, String>(); if (innerRequestDataValueProcessor != null && request != null) { Map<String, String> innerExtras = innerRequestDataValueProcessor.getExtraHiddenFields(request); if (innerExtras != null) { extraFields.putAll(innerExtras); } } return extraFields; }