如果你ValidatorSupport
在 Struts 2 中扩展类,你可以在类上有实例变量吗?它可以有状态还是必须是无状态的?
我知道动作类不是单例并且可以有状态,但我不确定它们关联的验证器。
我需要知道我是否可以在扩展的验证器中拥有一个实例变量ValidatorSupport
。例如:
public class SomeValidator extends ValidatorSupport {
private boolean alreadyHasErrorOnPage;
}
如果验证器是 signleston,则使用 alreadyHasErrorOnPage ,因为它会导致竞争条件并且永远不会为每个请求/响应提供一致的默认状态。如果它们不是单例并且为每个请求/响应创建一个新的 SomeValidator 实例,那么使用 alreadyHasErrorOnPage 将是安全的。
对以下内容持保留态度,因为我不确定其中有多少与我目前正在从事的项目特别相关。
验证者是我们项目中的单身人士。我进去调试了应用程序,发现实例成员在第二次请求/响应后不处于默认状态。本质上,它们继承了第一个或先前请求/响应的值。
我仍然不确定的原因是因为我们的项目似乎已经包装和 ValidatorSuppport 并暴露了我们的验证器实现的接口。在我们的代码库中,似乎有代码将验证器的实例存储在映射中,基本上使它们成为单例。我无法确定股票 struts2 的行为是否相同。