diff --git a/core/src/main/java/org/apache/struts2/views/freemarker/ScopesHashModel.java b/core/src/main/java/org/apache/struts2/views/freemarker/ScopesHashModel.java index e59502e2a..f74d213d3 100644 --- a/core/src/main/java/org/apache/struts2/views/freemarker/ScopesHashModel.java +++ b/core/src/main/java/org/apache/struts2/views/freemarker/ScopesHashModel.java @@ -32,7 +32,6 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.util.HashMap; import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; /** @@ -52,8 +51,7 @@ public class ScopesHashModel extends SimpleHash implements TemplateModel { private ServletContext servletContext; private ValueStack stack; private final Map unlistedModels = new HashMap(); - private final Map stackCache = new ConcurrentHashMap(); - private static final Object NULL_OBJECT = new Object(); + private volatile Object parametersCache; public ScopesHashModel(ObjectWrapper objectWrapper, ServletContext context, HttpServletRequest request, ValueStack stack) { super(objectWrapper); @@ -143,21 +141,15 @@ public class ScopesHashModel extends SimpleHash implements TemplateModel { } private Object findValueOnStack(final String key) { - if (this.stackCache.containsKey(key)) { - final Object value = this.stackCache.get(key); - if (value == NULL_OBJECT) { - return null; + if ("parameters".equals(key)) { + if (parametersCache != null) { + return parametersCache; } - return value; + Object parametersLocal = stack.findValue(key); + parametersCache = parametersLocal; + return parametersLocal; } - - final Object value = this.stack.findValue(key); - if (value == null) { - this.stackCache.put(key, NULL_OBJECT); - } else { - this.stackCache.put(key, value); - } - return value; + return stack.findValue(key); } public void put(String string, boolean b) { diff --git a/plugins/config-browser/src/main/resources/config-browser/actionNames.ftl b/plugins/config-browser/src/main/resources/config-browser/actionNames.ftl index 0ab3bd106..d7e86510d 100644 --- a/plugins/config-browser/src/main/resources/config-browser/actionNames.ftl +++ b/plugins/config-browser/src/main/resources/config-browser/actionNames.ftl @@ -32,7 +32,7 @@ <@s.param name="namespace">${namespace} <@s.param name="actionName">${name} -
  • <@s.a href="%{showConfig}">${name}
  • +
  • ${name}
  • diff --git a/plugins/config-browser/src/main/resources/config-browser/page-header.ftl b/plugins/config-browser/src/main/resources/config-browser/page-header.ftl index 11f730217..553f57f67 100644 --- a/plugins/config-browser/src/main/resources/config-browser/page-header.ftl +++ b/plugins/config-browser/src/main/resources/config-browser/page-header.ftl @@ -69,7 +69,7 @@ <@s.url var="namespaceLink" action="actionNames" includeParams="none"> <@s.param name="namespace">${namespace} - <@s.a href="%{namespaceLink}"><#if namespace == ""> default <#else> ${namespace} + <#if namespace == ""> default <#else> ${namespace} @@ -84,7 +84,7 @@ <@s.param name="namespace">${namespace} <@s.param name="actionName">${name} - <@s.a href="%{actionLink}">${name} + ${name}