📄 portletfreemarkerresult.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: PortletFreemarkerResult.java
package org.apache.struts2.views.freemarker;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import freemarker.template.*;
import java.io.IOException;
import java.io.Writer;
import java.util.Locale;
import javax.portlet.*;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.dispatcher.StrutsResultSupport;
import org.apache.struts2.portlet.context.PortletActionContext;
import org.apache.struts2.views.util.ResourceUtil;
// Referenced classes of package org.apache.struts2.views.freemarker:
// FreemarkerManager
public class PortletFreemarkerResult extends StrutsResultSupport
{
private static final long serialVersionUID = 0xb2b1358bdafc78c9L;
protected ActionInvocation invocation;
protected Configuration configuration;
protected ObjectWrapper wrapper;
protected FreemarkerManager freemarkerManager;
protected String location;
private String pContentType;
public PortletFreemarkerResult()
{
pContentType = "text/html";
}
public PortletFreemarkerResult(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, PortletException
{
if (PortletActionContext.isEvent())
executeActionResult(location, invocation);
else
if (PortletActionContext.isRender())
executeRenderResult(location, invocation);
}
private void executeActionResult(String location, ActionInvocation invocation)
{
ActionResponse res = PortletActionContext.getActionResponse();
res.setRenderParameter("struts.portlet.action", "freemarkerDirect");
res.setRenderParameter("location", location);
res.setRenderParameter("struts.portlet.mode", PortletActionContext.getRequest().getPortletMode().toString());
}
private void executeRenderResult(String location, ActionInvocation invocation)
throws TemplateException, IOException, TemplateModelException, PortletException
{
Template template;
TemplateModel model;
this.location = location;
this.invocation = invocation;
configuration = getConfiguration();
wrapper = getObjectWrapper();
javax.servlet.http.HttpServletRequest req = ServletActionContext.getRequest();
if (!location.startsWith("/"))
{
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_148;
PortletActionContext.getRenderResponse().setContentType(pContentType);
template.process(model, getWriter());
postTemplateProcess(template, model);
break MISSING_BLOCK_LABEL_148;
Exception exception;
exception;
postTemplateProcess(template, model);
throw exception;
}
protected Configuration getConfiguration()
throws TemplateException
{
return freemarkerManager.getConfiguration(ServletActionContext.getServletContext());
}
protected ObjectWrapper getObjectWrapper()
{
return configuration.getObjectWrapper();
}
protected Writer getWriter()
throws IOException
{
return PortletActionContext.getRenderResponse().getWriter();
}
protected TemplateModel createModel()
throws TemplateModelException
{
javax.servlet.ServletContext servletContext = ServletActionContext.getServletContext();
javax.servlet.http.HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
com.opensymphony.xwork2.util.ValueStack stack = ServletActionContext.getContext().getValueStack();
return freemarkerManager.buildTemplateModel(stack, invocation.getAction(), servletContext, request, response, wrapper);
}
protected Locale deduceLocale()
{
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 + -