📄 freemarkerresult.java
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space
// Source File Name: FreemarkerResult.java
package org.apache.struts2.views.freemarker;
import com.opensymphony.xwork2.*;
import freemarker.template.*;
import java.io.IOException;
import java.io.Writer;
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.dispatcher.StrutsResultSupport;
import org.apache.struts2.views.util.ResourceUtil;
// Referenced classes of package org.apache.struts2.views.freemarker:
// FreemarkerManager
public class FreemarkerResult extends StrutsResultSupport
{
private static final long serialVersionUID = 0xcb9107218d17f981L;
protected ActionInvocation invocation;
protected Configuration configuration;
protected ObjectWrapper wrapper;
protected FreemarkerManager freemarkerManager;
private Writer writer;
protected String location;
private String pContentType;
public FreemarkerResult()
{
pContentType = "text/html";
}
public FreemarkerResult(String location)
{
super(location);
pContentType = "text/html";
}
public void setFreemarkerManager(FreemarkerManager mgr)
{
freemarkerManager = mgr;
}
public void setContentType(String aContentType)
{
pContentType = aContentType;
}
public String getContentType()
{
return pContentType;
}
public void doExecute(String location, ActionInvocation invocation)
throws IOException, TemplateException
{
Template template;
TemplateModel model;
this.location = location;
this.invocation = invocation;
configuration = getConfiguration();
wrapper = getObjectWrapper();
if (!location.startsWith("/"))
{
ActionContext ctx = invocation.getInvocationContext();
HttpServletRequest req = (HttpServletRequest)ctx.get("com.opensymphony.xwork2.dispatcher.HttpServletRequest");
String base = ResourceUtil.getResourceBase(req);
location = (new StringBuilder()).append(base).append("/").append(location).toString();
}
template = configuration.getTemplate(location, deduceLocale());
model = createModel();
if (!preTemplateProcess(template, model))
break MISSING_BLOCK_LABEL_146;
template.process(model, getWriter());
postTemplateProcess(template, model);
break MISSING_BLOCK_LABEL_146;
Exception exception;
exception;
postTemplateProcess(template, model);
throw exception;
}
protected Configuration getConfiguration()
throws TemplateException
{
return freemarkerManager.getConfiguration(ServletActionContext.getServletContext());
}
protected ObjectWrapper getObjectWrapper()
{
return configuration.getObjectWrapper();
}
public void setWriter(Writer writer)
{
this.writer = writer;
}
protected Writer getWriter()
throws IOException
{
if (writer != null)
return writer;
else
return ServletActionContext.getResponse().getWriter();
}
protected TemplateModel createModel()
throws TemplateModelException
{
javax.servlet.ServletContext servletContext = ServletActionContext.getServletContext();
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
com.opensymphony.xwork2.util.ValueStack stack = ServletActionContext.getContext().getValueStack();
Object action = null;
if (invocation != null)
action = invocation.getAction();
return freemarkerManager.buildTemplateModel(stack, action, servletContext, request, response, wrapper);
}
protected Locale deduceLocale()
{
if (invocation.getAction() instanceof LocaleProvider)
return ((LocaleProvider)invocation.getAction()).getLocale();
else
return configuration.getLocale();
}
protected void postTemplateProcess(Template template1, TemplateModel templatemodel)
throws IOException
{
}
protected boolean preTemplateProcess(Template template, TemplateModel model)
throws IOException
{
Object attrContentType = template.getCustomAttribute("content_type");
if (attrContentType != null)
{
ServletActionContext.getResponse().setContentType(attrContentType.toString());
} else
{
String contentType = getContentType();
if (contentType == null)
contentType = "text/html";
String encoding = template.getEncoding();
if (encoding != null)
contentType = (new StringBuilder()).append(contentType).append("; charset=").append(encoding).toString();
ServletActionContext.getResponse().setContentType(contentType);
}
return true;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -