Java 我们可以将任何类对象从action类返回给拦截器吗

Java 我们可以将任何类对象从action类返回给拦截器吗,java,struts2,Java,Struts2,我们是否可以从action类方法向拦截器返回任何对象类型而不是返回字符串,然后从拦截器返回字符串以标识所需的结果?从技术上讲,是的,如果您绕过“调用”机制。你应该吗?可能不会 更干净、规范的S2方法是向您的拦截器公开一个属性,该属性由操作实现的接口定义。例如,您可以将其称为Revisionable或RevisionAware,并公开一对由之前和之后引用组成的代码 在您的拦截器中,您可以用伪代码检查该接口: if (action instanceof Revisionable) { ret

我们是否可以从action类方法向拦截器返回任何对象类型而不是返回字符串,然后从拦截器返回字符串以标识所需的结果?

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

更干净、规范的S2方法是向您的拦截器公开一个属性,该属性由操作实现的接口定义。例如,您可以将其称为
Revisionable
RevisionAware
,并公开一对由
之前
之后
引用组成的代码

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

if (action instanceof Revisionable) {
    return processRevisionablePair();
}
您可以在接口中包含一个方法,该方法处理返回适当结果的特定于操作或模型的修订,或者如果在整个应用程序中都是相同的,则可以在拦截器中封装该功能,并具有“修改”和/或“未修改”的结果,等等

返回字符串以外的内容的操作方法偏离了框架预期,导致了处理不同操作的多种方法、测试的多种方法,等等。讨厌。保持事情的一致性,避免一层文档和不必要的差异


最后,要基于action方法返回值返回结果,需要实现一个提供结果名称的
PreResultListener
。在
invoke
返回为后,结果已经呈现。

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

为什么?你想做什么?我只需要一个记录器类型的现象,里面我还需要反映更改对象的前映像和后映像。你可以在拦截器中获取你的对象。不需要从action方法返回它。可能的重复不是真正的重复,原因有二:此问题询问非字符串操作返回值,并要求使用
PreResultListener
而不是渲染后执行的内容。