📄 tagmodel.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: TagModel.java
package org.apache.struts2.views.freemarker.tags;
import com.opensymphony.xwork2.config.Configuration;
import com.opensymphony.xwork2.config.ConfigurationManager;
import com.opensymphony.xwork2.inject.Container;
import com.opensymphony.xwork2.util.ValueStack;
import freemarker.ext.beans.BeanModel;
import freemarker.template.*;
import java.io.IOException;
import java.io.Writer;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts2.components.Component;
import org.apache.struts2.dispatcher.Dispatcher;
// Referenced classes of package org.apache.struts2.views.freemarker.tags:
// CallbackWriter
public abstract class TagModel
implements TemplateTransformModel
{
private static final Log LOG = LogFactory.getLog(org/apache/struts2/views/freemarker/tags/TagModel);
protected ValueStack stack;
protected HttpServletRequest req;
protected HttpServletResponse res;
public TagModel(ValueStack stack, HttpServletRequest req, HttpServletResponse res)
{
this.stack = stack;
this.req = req;
this.res = res;
}
public Writer getWriter(Writer writer, Map params)
throws TemplateModelException, IOException
{
Component bean = getBean();
Container container = Dispatcher.getInstance().getConfigurationManager().getConfiguration().getContainer();
container.inject(bean);
Map unwrappedParameters = unwrapParameters(params);
bean.copyParams(unwrappedParameters);
return new CallbackWriter(bean, writer);
}
protected abstract Component getBean();
protected Map unwrapParameters(Map params)
{
Map map = new HashMap(params.size());
DefaultObjectWrapper objectWrapper = new DefaultObjectWrapper();
Iterator iterator = params.entrySet().iterator();
do
{
if (!iterator.hasNext())
break;
java.util.Map.Entry entry = (java.util.Map.Entry)iterator.next();
Object value = entry.getValue();
if (value != null)
if (value instanceof TemplateModel)
try
{
map.put(entry.getKey(), objectWrapper.unwrap((TemplateModel)value));
}
catch (TemplateModelException e)
{
LOG.error((new StringBuilder()).append("failed to unwrap [").append(value).append("] it will be ignored").toString(), e);
}
else
map.put(entry.getKey(), value.toString());
} while (true);
return map;
}
protected Map convertParams(Map params)
{
HashMap map = new HashMap(params.size());
Iterator iterator = params.entrySet().iterator();
do
{
if (!iterator.hasNext())
break;
java.util.Map.Entry entry = (java.util.Map.Entry)iterator.next();
Object value = entry.getValue();
if (value != null && !complexType(value))
map.put(entry.getKey(), value.toString());
} while (true);
return map;
}
protected Map getComplexParams(Map params)
{
HashMap map = new HashMap(params.size());
Iterator iterator = params.entrySet().iterator();
do
{
if (!iterator.hasNext())
break;
java.util.Map.Entry entry = (java.util.Map.Entry)iterator.next();
Object value = entry.getValue();
if (value != null && complexType(value))
if (value instanceof BeanModel)
map.put(entry.getKey(), ((BeanModel)value).getWrappedObject());
else
if (value instanceof SimpleNumber)
map.put(entry.getKey(), ((SimpleNumber)value).getAsNumber());
else
if (value instanceof SimpleSequence)
try
{
map.put(entry.getKey(), ((SimpleSequence)value).toList());
}
catch (TemplateModelException e)
{
LOG.error("There was a problem converting a SimpleSequence to a list", e);
}
} while (true);
return map;
}
protected boolean complexType(Object value)
{
return (value instanceof BeanModel) || (value instanceof SimpleNumber) || (value instanceof SimpleSequence);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -