Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala Vaadin-如何将参与者传递到UI元素_Scala_Servlets_Akka_Vaadin - Fatal编程技术网

Scala Vaadin-如何将参与者传递到UI元素

Scala Vaadin-如何将参与者传递到UI元素,scala,servlets,akka,vaadin,Scala,Servlets,Akka,Vaadin,我刚刚开始使用Vaadin,我有一个简单的Vaadin项目,定义了2个servlet及其相关的Vaadin UI类。我的问题涉及到如何构建一个“推”式系统,以便在UI实例之间传递信息 第一个servlet负责从用户收集数据(比如通过DataUI),然后将其存储在数据库中 第二个servlet负责用图形等报告收集的数据。。。(通过一个ReportUI)。对于查看与其相关的不同数据集的不同客户,可能有许多这样的实例 我想要一个体系结构,其中一个集中的ActorSystem(位于服务器上)创建Acto

我刚刚开始使用Vaadin,我有一个简单的Vaadin项目,定义了2个servlet及其相关的Vaadin UI类。我的问题涉及到如何构建一个“推”式系统,以便在UI实例之间传递信息

第一个servlet负责从用户收集数据(比如通过
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
此外,我正在使用scala 2.10.3和Scaladin包装库(Scaladin_2.10-3.0.0.jar)——但是任何基本的Java示例都会非常受欢迎——我更感兴趣的是看到更高级别的体系结构


再次感谢

每个UI在为您构建之后,都会调用
protectedvoidinit(VaadinRequest请求)
方法。在这里,您可以根据请求参数(即调用UI的URL)或可以在web.xml中配置的工厂类获得合适的参与者


因为这最终还是会让UI负责创建引用,所以可以通过Vaadin/CDI扩展进行真正的依赖项注入。这将允许您真正地将依赖项@注入到UI中。但这目前处于阿尔法状态,不确定这是否可以接受。我用过它,对于基本的@Inject东西,它似乎工作得很好。

谢谢你的回答。我知道
init
方法,但这似乎只是将基本问题向后推了一步。servlet在某种意义上仍然是硬连接到actor工厂的,并且本质上仍然负责创建自己的actor,而不是将依赖项传递给它。