res = invocation.invoke(params);
//result is string
if (res instanceof String) {
String resInfo = res.toString();
ActionProxy ap = invocation.getActionProxy();
Result result = null;
//如果action中存在相应的结果映射
if ((result = ap.getResults().get(resInfo)) != null) {
//调用结果对象相应的结果类型
Object rr = invokeByResult(invocation, result);
if (rr != null)
res = rr;
} //如果Action调用结果的路径信息中包含':'可省略Action中的@Result(name = "*"...)
else if ((result = ap.getResults().get(match)) != null || resInfo.indexOf(':') != -1) {
//非完全匹配字符串路径的调用
Object rr = invokeByString(invocation, result, resInfo);
if (rr != null)
res = rr;
} //如果全局结果对象集合中存在相应的结果映射
else if (results.containsKey(resInfo)) {
ResultProxy rp = results.get(resInfo);
Object rr = rp.invoke(rp.isRequireAction() ? invocation : null);
if (rr != null)
res = rr;
result = rp.getResult();
//当Result的type值不为空时,执行相应的ResultType
if (StringUtil.isNotNull(result.type())) {
rr = invokeByResult(invocation, result);
if (rr != null)
res = rr;
}
} else {