我们可以从动作类返回任何类对象到Interceptor

时间:2013-06-10 08:51:56

标签: java struts2

我们可以从动作类方法向拦截​​器返回任何对象类型而不是返回一个字符串,然后从拦截器返回一个字符串来识别所需的结果吗?

2 个答案:

答案 0 :(得分:2)

从技术上讲,是的,如果你绕过“调用”机制。你应该?可能没有。

更清晰,规范的S2方法是将属性暴露给拦截器,由动作实现的接口定义。例如,您可以将其称为RevisionableRevisionAware,并公开由beforeafter引用组成的对。

在您的拦截器中,您将以伪代码检查该接口:

if (action instanceof Revisionable) {
    return processRevisionablePair();
}

您可以在接口中包含一个方法来处理返回适当结果的特定于操作或模型的修订,或者如果它在整个应用程序中是相同的,您可以在拦截器中包装该功能并进行“修改”和/或“未修改”的结果等。

返回其他而不是字符串的操作方法会偏离框架期望,从而导致处理不同操作的多种方式,多种测试方法等等。呸。保持一致,避免一层不必要的文档和区分。

最后,要根据操作方法返回值返回结果,您需要实现一个将提供结果名称的PreResultListener。在invoke返回per the docs后,结果已经呈现。

答案 1 :(得分:0)

您可以直接从您的操作返回Result界面的实例。