You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2014/04/06 21:14:19 UTC
[17/31] git commit: WW-4169 Solves problem resolving path when action
contains slashes
WW-4169 Solves problem resolving path when action contains slashes
Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/272feecf
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/272feecf
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/272feecf
Branch: refs/heads/feature/use-js-to-support-multiple-buttons
Commit: 272feecfbd9bd69bf500af31541567f254dd0c6d
Parents: a6017dc
Author: Lukasz Lenart <lu...@apache.org>
Authored: Fri Mar 28 08:09:31 2014 +0100
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Fri Mar 28 08:09:31 2014 +0100
----------------------------------------------------------------------
.../views/freemarker/FreemarkerResult.java | 18 +++++++++++++-----
.../views/freemarker/FreeMarkerResultTest.java | 3 +++
2 files changed, 16 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/struts/blob/272feecf/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerResult.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerResult.java b/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerResult.java
index b8af3d6..3ded53b 100644
--- a/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerResult.java
+++ b/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerResult.java
@@ -39,7 +39,6 @@ import org.apache.commons.lang3.ObjectUtils;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.StrutsStatics;
import org.apache.struts2.dispatcher.StrutsResultSupport;
-import org.apache.struts2.views.util.ResourceUtil;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
@@ -165,12 +164,21 @@ public class FreemarkerResult extends StrutsResultSupport {
ActionContext ctx = invocation.getInvocationContext();
HttpServletRequest req = (HttpServletRequest) ctx.get(ServletActionContext.HTTP_REQUEST);
- if (!locationArg.startsWith("/")) {
- String base = ResourceUtil.getResourceBase(req);
- locationArg = base + "/" + locationArg;
+ String absoluteLocation;
+ if (location.startsWith("/")) {
+ absoluteLocation = location;
+ } else {
+ String namespace = invocation.getProxy().getNamespace();
+ if (namespace == null || namespace.length() == 0 || namespace.equals("/")) {
+ absoluteLocation = "/" + location;
+ } else if (namespace.startsWith("/")) {
+ absoluteLocation = namespace + "/" + location;
+ } else {
+ absoluteLocation = "/" + namespace + "/" + location;
+ }
}
- Template template = configuration.getTemplate(locationArg, deduceLocale());
+ Template template = configuration.getTemplate(absoluteLocation, deduceLocale());
TemplateModel model = createModel();
// Give subclasses a chance to hook into preprocessing
http://git-wip-us.apache.org/repos/asf/struts/blob/272feecf/core/src/test/java/org/apache/struts2/views/freemarker/FreeMarkerResultTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/struts2/views/freemarker/FreeMarkerResultTest.java b/core/src/test/java/org/apache/struts2/views/freemarker/FreeMarkerResultTest.java
index d721826..060b927 100644
--- a/core/src/test/java/org/apache/struts2/views/freemarker/FreeMarkerResultTest.java
+++ b/core/src/test/java/org/apache/struts2/views/freemarker/FreeMarkerResultTest.java
@@ -22,7 +22,9 @@
package org.apache.struts2.views.freemarker;
import com.opensymphony.xwork2.ActionContext;
+import com.opensymphony.xwork2.ActionProxy;
import com.opensymphony.xwork2.mock.MockActionInvocation;
+import com.opensymphony.xwork2.mock.MockActionProxy;
import com.opensymphony.xwork2.util.ClassLoaderUtil;
import com.opensymphony.xwork2.util.ValueStack;
import com.opensymphony.xwork2.util.fs.DefaultFileManagerFactory;
@@ -164,6 +166,7 @@ public class FreeMarkerResultTest extends StrutsInternalTestCase {
invocation = new MockActionInvocation();
invocation.setStack(stack);
invocation.setInvocationContext(context);
+ invocation.setProxy(new MockActionProxy());
servletContext.setRealPath(new File(FreeMarkerResultTest.class.getResource(
"someFreeMarkerFile.ftl").toURI()).toURL().getFile());
}