📄 component.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: Component.java
package org.apache.struts2.components;
import com.opensymphony.xwork2.util.TextParseUtil;
import com.opensymphony.xwork2.util.ValueStack;
import java.io.*;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.StrutsException;
import org.apache.struts2.dispatcher.mapper.ActionMapper;
import org.apache.struts2.dispatcher.mapper.ActionMapping;
import org.apache.struts2.util.FastByteArrayOutputStream;
import org.apache.struts2.views.jsp.TagUtils;
import org.apache.struts2.views.util.ContextUtil;
import org.apache.struts2.views.util.UrlHelper;
public class Component
{
public static final String COMPONENT_STACK = "__component_stack";
protected ValueStack stack;
protected Map parameters;
protected String id;
protected ActionMapper actionMapper;
static final boolean $assertionsDisabled = !org/apache/struts2/components/Component.desiredAssertionStatus();
public Component(ValueStack stack)
{
this.stack = stack;
parameters = new LinkedHashMap();
getComponentStack().push(this);
}
private String getComponentName()
{
Class c = getClass();
String name = c.getName();
int dot = name.lastIndexOf('.');
return name.substring(dot + 1).toLowerCase();
}
public void setActionMapper(ActionMapper mapper)
{
actionMapper = mapper;
}
public ValueStack getStack()
{
return stack;
}
public Stack getComponentStack()
{
Stack componentStack = (Stack)stack.getContext().get("__component_stack");
if (componentStack == null)
{
componentStack = new Stack();
stack.getContext().put("__component_stack", componentStack);
}
return componentStack;
}
public boolean start(Writer writer)
{
return true;
}
public boolean end(Writer writer, String body)
{
return end(writer, body, true);
}
protected boolean end(Writer writer, String body, boolean popComponentStack)
{
if (!$assertionsDisabled && body == null)
throw new AssertionError();
try
{
writer.write(body);
}
catch (IOException e)
{
throw new StrutsException((new StringBuilder()).append("IOError while writing the body: ").append(e.getMessage()).toString(), e);
}
if (popComponentStack)
popComponentStack();
return false;
}
protected void popComponentStack()
{
getComponentStack().pop();
}
protected Component findAncestor(Class clazz)
{
Stack componentStack = getComponentStack();
int currPosition = componentStack.search(this);
if (currPosition >= 0)
{
int start = componentStack.size() - currPosition - 1;
for (int i = start; i >= 0; i--)
{
Component component = (Component)componentStack.get(i);
if (clazz.isAssignableFrom(component.getClass()) && component != this)
return component;
}
}
return null;
}
protected String findString(String expr)
{
return (String)findValue(expr, java/lang/String);
}
protected String findString(String expr, String field, String errorMsg)
{
if (expr == null)
throw fieldError(field, errorMsg, null);
else
return findString(expr);
}
protected StrutsException fieldError(String field, String errorMsg, Exception e)
{
String msg = (new StringBuilder()).append("tag '").append(getComponentName()).append("', field '").append(field).append(id == null ? "" : (new StringBuilder()).append("', id '").append(id).toString()).append(parameters == null || !parameters.containsKey("name") ? "" : (new StringBuilder()).append("', name '").append(parameters.get("name")).toString()).append("': ").append(errorMsg).toString();
throw new StrutsException(msg, e);
}
protected Object findValue(String expr)
{
if (expr == null)
return null;
if (altSyntax() && expr.startsWith("%{") && expr.endsWith("}"))
expr = expr.substring(2, expr.length() - 1);
return getStack().findValue(expr);
}
public boolean altSyntax()
{
return ContextUtil.isUseAltSyntax(stack.getContext());
}
protected Object findValue(String expr, String field, String errorMsg)
{
if (expr == null)
throw fieldError(field, errorMsg, null);
Object value = null;
Exception problem = null;
try
{
value = findValue(expr);
}
catch (Exception e)
{
problem = e;
}
if (value == null)
throw fieldError(field, errorMsg, problem);
else
return value;
}
protected Object findValue(String expr, Class toType)
{
if (altSyntax() && toType == java/lang/String)
return TextParseUtil.translateVariables('%', expr, stack);
if (altSyntax() && expr.startsWith("%{") && expr.endsWith("}"))
expr = expr.substring(2, expr.length() - 1);
return getStack().findValue(expr, toType);
}
/**
* @deprecated Method determineActionURL is deprecated
*/
protected String determineActionURL(String action, String namespace, String method, HttpServletRequest req, HttpServletResponse res, Map parameters, String scheme,
boolean includeContext, boolean encodeResult)
{
return determineActionURL(action, namespace, method, req, res, parameters, scheme, includeContext, encodeResult, false, true);
}
protected String determineActionURL(String action, String namespace, String method, HttpServletRequest req, HttpServletResponse res, Map parameters, String scheme,
boolean includeContext, boolean encodeResult, boolean forceAddSchemeHostAndPort, boolean escapeAmp)
{
String finalAction = findString(action);
String finalMethod = method == null ? method : findString(method);
String finalNamespace = determineNamespace(namespace, getStack(), req);
ActionMapping mapping = new ActionMapping(finalAction, finalNamespace, finalMethod, parameters);
String uri = actionMapper.getUriFromActionMapping(mapping);
return UrlHelper.buildUrl(uri, req, res, parameters, scheme, includeContext, encodeResult, forceAddSchemeHostAndPort, escapeAmp);
}
protected String determineNamespace(String namespace, ValueStack stack, HttpServletRequest req)
{
String result;
if (namespace == null)
result = TagUtils.buildNamespace(actionMapper, stack, req);
else
result = findString(namespace);
if (result == null)
result = "";
return result;
}
public void copyParams(Map params)
{
stack.push(parameters);
stack.push(this);
java.util.Map.Entry entry;
String key;
for (Iterator iterator = params.entrySet().iterator(); iterator.hasNext(); stack.setValue(key, entry.getValue()))
{
entry = (java.util.Map.Entry)iterator.next();
key = (String)entry.getKey();
}
stack.pop();
stack.pop();
break MISSING_BLOCK_LABEL_133;
Exception exception;
exception;
stack.pop();
stack.pop();
throw exception;
}
protected String toString(Throwable t)
{
FastByteArrayOutputStream bout = new FastByteArrayOutputStream();
PrintWriter wrt = new PrintWriter(bout);
t.printStackTrace(wrt);
wrt.close();
return bout.toString();
}
public Map getParameters()
{
return parameters;
}
public void addAllParameters(Map params)
{
parameters.putAll(params);
}
public void addParameter(String key, Object value)
{
if (key != null)
{
Map params = getParameters();
if (value == null)
params.remove(key);
else
params.put(key, value);
}
}
public String getId()
{
return id;
}
public void setId(String id)
{
if (id != null)
this.id = findString(id);
}
public boolean usesBody()
{
return false;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -