diff --git a/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java b/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java index 9459b7d2d..4e62c21ac 100644 --- a/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java +++ b/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java @@ -80,12 +80,17 @@ public class DefaultUrlHelper implements UrlHelper { return buildUrl(action, request, response, params, scheme, includeContext, encodeResult, forceAddSchemeHostAndPort, true); } - public String buildUrl(String action, HttpServletRequest request, HttpServletResponse response, Map params, String scheme, + public String buildUrl(String action, HttpServletRequest request, HttpServletResponse response, Map params, String urlScheme, boolean includeContext, boolean encodeResult, boolean forceAddSchemeHostAndPort, boolean escapeAmp) { StringBuilder link = new StringBuilder(); boolean changedScheme = false; + String scheme = null; + if (isValidScheme(urlScheme)) { + scheme = urlScheme; + } + // only append scheme if it is different to the current scheme *OR* // if we explicity want it to be appended by having forceAddSchemeHostAndPort = true if (forceAddSchemeHostAndPort) { @@ -234,6 +239,10 @@ public class DefaultUrlHelper implements UrlHelper { } } + protected boolean isValidScheme(String scheme) { + return HTTP_PROTOCOL.equals(scheme) || HTTPS_PROTOCOL.equals(scheme); + } + private String buildParameterSubstring(String name, String value) { StringBuilder builder = new StringBuilder(); builder.append(encode(name));