Scala Vaadin-如何将参与者传递到UI元素
我刚刚开始使用Vaadin,我有一个简单的Vaadin项目,定义了2个servlet及其相关的Vaadin UI类。我的问题涉及到如何构建一个“推”式系统,以便在UI实例之间传递信息 第一个servlet负责从用户收集数据(比如通过Scala Vaadin-如何将参与者传递到UI元素,scala,servlets,akka,vaadin,Scala,Servlets,Akka,Vaadin,我刚刚开始使用Vaadin,我有一个简单的Vaadin项目,定义了2个servlet及其相关的Vaadin UI类。我的问题涉及到如何构建一个“推”式系统,以便在UI实例之间传递信息 第一个servlet负责从用户收集数据(比如通过DataUI),然后将其存储在数据库中 第二个servlet负责用图形等报告收集的数据。。。(通过一个ReportUI)。对于查看与其相关的不同数据集的不同客户,可能有许多这样的实例 我想要一个体系结构,其中一个集中的ActorSystem(位于服务器上)创建Acto
DataUI
),然后将其存储在数据库中
第二个servlet负责用图形等报告收集的数据。。。(通过一个ReportUI
)。对于查看与其相关的不同数据集的不同客户,可能有许多这样的实例
我想要一个体系结构,其中一个集中的ActorSystem
(位于服务器上)创建ActorRef
实例,并在创建时将其传递给每个DataUI
。当DataUI
收集一些数据时,它通过ActorRef
将其作为消息发送,然后关闭。同样,每个ReportUI
中都传递了一个ActorRef
,它将侦听与其报告相关的新数据,并相应地更新UI
我的问题是,我对Vaadin基础设施的理解不够透彻,无法理解在构建UI组件时如何将引用(如参与者)传递到UI组件中。UI对象似乎是使用类似于反射的东西进行实例化的,只能通过请求对象或访问web.xml文件中设置的字符串参数来传递信息。如何使用vaadinui对象进行依赖项注入
我知道通过使用全局可访问的单例对象可以获得这种行为,但我希望有一种体系结构,在这种体系结构中,我可以单独对每个组件进行单元测试(例如,通过传递模拟参与者),而不必将它们硬连接到全局单例对象或数据库
是否有一个标准的方法来实现这一点?任何关于良好架构的帮助或建议都将不胜感激!提前谢谢
我目前正在使用
- 瓦丁7.1.12
- JavaXServlet 2.5
- akka 2.1.2
再次感谢 每个UI在为您构建之后,都会调用
protectedvoidinit(VaadinRequest请求)
方法。在这里,您可以根据请求参数(即调用UI的URL)或可以在web.xml中配置的工厂类获得合适的参与者
因为这最终还是会让UI负责创建引用,所以可以通过Vaadin/CDI扩展进行真正的依赖项注入。这将允许您真正地将依赖项@注入到UI中。但这目前处于阿尔法状态,不确定这是否可以接受。我用过它,对于基本的@Inject东西,它似乎工作得很好。谢谢你的回答。我知道
init
方法,但这似乎只是将基本问题向后推了一步。servlet在某种意义上仍然是硬连接到actor工厂的,并且本质上仍然负责创建自己的actor,而不是将依赖项传递给它。