Struts 2.3:更改Action Bean的范围
我是Struts2的新手。Struts 2.3:更改Action Bean的范围
我在Struts文档中找不到关于bean范围的任何信息,Struts默认使用Request范围,这不适合我的项目。
我在Struts1中发现了很多关于范围使用情况的信息,但所有文档链接都不可用。
您能否建议如何设置Action Classes的作用域?
Struts它是一个前端 MVC框架。
Struts2操作是控制器(MVC的C),不应该用作bean;他们应该将bean从底层业务层转移到View(MVC的V,例如JSP)。
你不应该有50个属性的动作,你应该有一个动作与一些POJO与50个属性内的属性。在Struts2的后面,你可以在业务层上运行任何东西,例如Java EE(EJB 3,JPA 2,CDI等),以及它的所有bean和范围,或者Spring,或者任何其他的东西。
Struts2操作是线程安全的,按请求实例化,这是如何研究工作的。不要试图改变行为的范围,将它们用作bean,尝试了解什么是行为以及如何使用它们。我建议使用Maven运行Struts2 + Java EE> = 6 + Struts2-CDI-plugin + Struts2-Convention-plugin + Struts2-Json-plugin。 Maven原型。
谢谢你的回答。我在项目中有一个Struts2 + EJB3,我需要从db中加载一些数据以初始化并在屏幕上使用。我不能做这个操作的每个请求 - 因为这个操作太昂贵了。目前我使用会话来存储屏幕数据 - 但这是非常糟糕的做法...任何建议,如何在请求之间存储数据?我认为,使用控制器作为单身人士或范围会话 - 这是一个非常好的主意,像servlet或弹簧mvc控制器.. – Aventes
如果数据是每个用户,会话是好的。如果数据很常见,请将其缓存,例如。在ejb3 @Singleton。阅读更多:http://stackoverflow.com/questions/26733141/load-and-cache-application-scoped-data-with-singleton-and-stateless –
谢谢你的帮助!问题解决了) – Aventes
您可以阅读更多关于范围[这里](http://stackoverflow.com/a/27670618/573032) –
[This](http://stackoverflow.com/a/20458850/573032)答案也是关于范围,但(不是upvoted)。关于您的回复* Struts默认使用Request范围*。 –