mirror of
https://github.com/apache/struts.git
synced 2026-08-11 01:27:14 +00:00
Moving sitemesh decorator over to sitemesh plugin, changing debug interceptor to only store stack in
session when first invoked, documentation updates to code behind plugin WW-1546 WW-1483 git-svn-id: https://svn.apache.org/repos/asf/struts/struts2/trunk@483839 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
@@ -42,7 +42,7 @@
|
||||
<mapper class="com.opensymphony.module.sitemesh.mapper.FileDecoratorMapper">
|
||||
</mapper>
|
||||
|
||||
<mapper class="org.apache.struts2.showcase.sitemesh.NoneDecoratorMapper">
|
||||
<mapper class="org.apache.struts2.sitemesh.NoneDecoratorMapper">
|
||||
</mapper>
|
||||
|
||||
<mapper class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper">
|
||||
|
||||
+13
-1
@@ -40,6 +40,7 @@ import javax.servlet.http.HttpServletResponse;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.apache.struts2.ServletActionContext;
|
||||
import org.apache.struts2.views.freemarker.FreemarkerManager;
|
||||
import org.apache.struts2.views.freemarker.FreemarkerResult;
|
||||
import org.apache.struts2.StrutsConstants;
|
||||
|
||||
@@ -105,11 +106,19 @@ public class DebuggingInterceptor implements Interceptor {
|
||||
private boolean enableXmlWithConsole = false;
|
||||
|
||||
private boolean devMode;
|
||||
private FreemarkerManager freemarkerManager;
|
||||
|
||||
private boolean consoleEnabled = false;
|
||||
|
||||
@Inject(StrutsConstants.STRUTS_DEVMODE)
|
||||
public void setDevMode(String mode) {
|
||||
this.devMode = "true".equals(mode);
|
||||
}
|
||||
|
||||
@Inject
|
||||
public void setFreemarkerManager(FreemarkerManager mgr) {
|
||||
this.freemarkerManager = mgr;
|
||||
}
|
||||
|
||||
/**
|
||||
* Unused.
|
||||
@@ -145,6 +154,7 @@ public class DebuggingInterceptor implements Interceptor {
|
||||
}
|
||||
});
|
||||
} else if (CONSOLE_MODE.equals(type)) {
|
||||
consoleEnabled = true;
|
||||
inv.addPreResultListener(
|
||||
new PreResultListener() {
|
||||
public void beforeResult(ActionInvocation inv, String actionResult) {
|
||||
@@ -160,6 +170,7 @@ public class DebuggingInterceptor implements Interceptor {
|
||||
ActionContext.getContext().put("debugXML", xml);
|
||||
|
||||
FreemarkerResult result = new FreemarkerResult();
|
||||
result.setFreemarkerManager(freemarkerManager);
|
||||
result.setContentType("text/html");
|
||||
result.setLocation("/org/apache/struts2/interceptor/debugging/console.ftl");
|
||||
result.setParse(false);
|
||||
@@ -175,6 +186,7 @@ public class DebuggingInterceptor implements Interceptor {
|
||||
ValueStack stack = (ValueStack) ctx.getSession().get(SESSION_KEY);
|
||||
String cmd = getParameter(EXPRESSION_PARAM);
|
||||
|
||||
ServletActionContext.getRequest().setAttribute("decorator", "none");
|
||||
HttpServletResponse res = ServletActionContext.getResponse();
|
||||
res.setContentType("text/plain");
|
||||
|
||||
@@ -193,7 +205,7 @@ public class DebuggingInterceptor implements Interceptor {
|
||||
try {
|
||||
return inv.invoke();
|
||||
} finally {
|
||||
if (devMode) {
|
||||
if (devMode && consoleEnabled) {
|
||||
final ActionContext ctx = ActionContext.getContext();
|
||||
ctx.getSession().put(SESSION_KEY, ctx.get(ActionContext.VALUE_STACK));
|
||||
}
|
||||
|
||||
+3
@@ -48,6 +48,9 @@ import com.opensymphony.xwork2.config.entities.ResultTypeConfig;
|
||||
import com.opensymphony.xwork2.config.providers.InterceptorBuilder;
|
||||
import com.opensymphony.xwork2.inject.Inject;
|
||||
|
||||
/**
|
||||
* Uses code-behind conventions to solve the two unknown problems.
|
||||
*/
|
||||
public class CodebehindUnknownHandler implements UnknownHandler {
|
||||
|
||||
protected String defaultPackageName = "codebehind-default";
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<!DOCTYPE struts PUBLIC
|
||||
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
|
||||
"http://struts.apache.org/dtds/struts-2.0.dtd">
|
||||
|
||||
|
||||
<struts>
|
||||
<bean type="com.opensymphony.xwork2.UnknownHandler" class="org.apache.struts2.codebehind.CodebehindUnknownHandler" />
|
||||
|
||||
|
||||
+11
-7
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id$
|
||||
* $Id: FreeMarkerPageFilter.java 475637 2006-11-16 08:32:03Z mrdon $
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
@@ -18,15 +18,19 @@
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.apache.struts2.showcase.sitemesh;
|
||||
package org.apache.struts2.sitemesh;
|
||||
|
||||
import com.opensymphony.module.sitemesh.mapper.AbstractDecoratorMapper;
|
||||
import com.opensymphony.module.sitemesh.Decorator;
|
||||
import com.opensymphony.module.sitemesh.Page;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import com.opensymphony.module.sitemesh.Decorator;
|
||||
import com.opensymphony.module.sitemesh.Page;
|
||||
import com.opensymphony.module.sitemesh.mapper.AbstractDecoratorMapper;
|
||||
|
||||
/**
|
||||
* Won't decorate the output if it finds a "decorator" flag in the request
|
||||
*/
|
||||
public class NoneDecoratorMapper extends AbstractDecoratorMapper {
|
||||
|
||||
public Decorator getDecorator(HttpServletRequest req, Page page) {
|
||||
if ("none".equals(req.getAttribute("decorator"))) {
|
||||
return null;
|
||||
@@ -34,4 +38,4 @@ public class NoneDecoratorMapper extends AbstractDecoratorMapper {
|
||||
|
||||
return super.getDecorator(req, page);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user