Vaadin FormLayout作为有状态JEE bean

时间:2017-11-07 12:59:44

标签: java-ee vaadin

我试图制作“客户”的JEE版本。教程应用程序(https://github.com/vaadin/tutorial)。

我尝试转换' CustomerForm' (https://github.com/vaadin/tutorial/blob/master/src/main/java/my/vaadin/app/CustomerForm.java)到有状态会话bean。我已将构造函数的内容移动到使用@PostConstruct注释的函数,并将@Stateful添加到类中。

当访问使用该表单的页面时,我收到以下错误(注意:在PatientForm下面的日志中实际上是CustomerForm)

  

引起:org.jboss.weld.exceptions.WeldException:Class   org.jboss.weld.util.reflection.Reflections无法访问其成员   class com.vaadin.server.AbstractClientConnector with modifiers   "保护"           在org.jboss.weld.util.reflection.Reflections.invokeAndUnwrap(Reflections.java:437)           在org.jboss.weld.bean.proxy.EnterpriseBeanProxyMethodHandler.invoke(EnterpriseBeanProxyMethodHandler.java:127)           在org.jboss.weld.bean.proxy.EnterpriseTargetBeanInstance.invoke(EnterpriseTargetBeanInstance.java:56)           在org.jboss.weld.bean.proxy.InjectionPointPropagatingEnterpriseTargetBeanInstance.invoke(InjectionPointPropagatingEnterpriseTargetBeanInstance.java:67)           在org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:100)           at com.tekliko.forensic.view.PatientForm $ Proxy $ _ $$ _ Weld $ EnterpriseProxy $ .isThis(Unknown   资源)           在com.vaadin.server.AbstractClientConnector.equals(AbstractClientConnector.java:1075)           在com.vaadin.ui.AbstractComponent.isOrHasAncestor(AbstractComponent.java:1377)           在com.vaadin.ui.AbstractComponentContainer.addComponent(AbstractComponentContainer.java:168)           在com.vaadin.ui.AbstractOrderedLayout.addComponent(AbstractOrderedLayout.java:95)           在com.vaadin.ui.AbstractComponentContainer.addComponents(AbstractComponentContainer.java:57)           在com.vaadin.ui.Horizo​​ntalLayout。(Horizo​​ntalLayout.java:50)           在com.tekliko.forensic.view.PatientListView.initComponent(PatientListView.java:58)           ... 78更多

@Stateful注释导致问题。如果我删除注释,令人惊讶的是,在视图中注入CustomerForm并在CustomerForm中注入持久性单元也可以工作(使用@PersistenceContext注入)。不过我无法调用EntityManager' merge'函数可能是因为bean不是一个合适的JEE bean。

  

0:39:53,306严重[com.vaadin.server.DefaultErrorHandler](默认   task-24):javax.persistence.TransactionRequiredException:   WFLYJPA0060:执行此操作需要交易(或者   使用事务或扩展持久化上下文)

0 个答案:

没有答案