Jsf 迁移到WildFly 8.2.0后更新失败
我们已经将我们的应用程序从JBoss 5.1.0 GA迁移到WildFly 8.2.0,为了实现这一点,我们将我们的技术升级到以下版本Jsf 迁移到WildFly 8.2.0后更新失败,jsf,wildfly,seam,Jsf,Wildfly,Seam,我们已经将我们的应用程序从JBoss 5.1.0 GA迁移到WildFly 8.2.0,为了实现这一点,我们将我们的技术升级到以下版本 JBoss Seam 2.2.0 to Seam 2.3.1 Hibernate 3.3.0 to 4.0.1 JSF 1.2 to 2.1 我们能够加载所有页面并成功保存数据。但是,当我们使用EntityHome时,无法更新数据 我正在使用h:commandButton保存数据 <h:commandButton id="save"
JBoss Seam 2.2.0 to Seam 2.3.1
Hibernate 3.3.0 to 4.0.1
JSF 1.2 to 2.1
我们能够加载所有页面并成功保存数据。但是,当我们使用EntityHome时,无法更新数据
我正在使用h:commandButton保存数据
<h:commandButton id="save"
styleClass="button"
value="Save"
action="#{userDetailMgr.doPersist}"
rendered="#{!userDetailHome.managed}"/>
<h:commandButton id="update"
styleClass="button"
value="Save"
action="#{userDetailMgr.doUpdate}"
rendered="#{userDetailHome.managed}"/>
根据UserDetailHome isManaged()中的sysout,我观察到,在加载页面时,我们在EntityHome的getInstancc()中加载所选日期时得到了正确的值(true)。,
加载页面后,EntityHome中的值将不再可用
当我们试图更新(任何操作)数据时,我们没有得到所选实例的数据,该实例在页面加载时被加载,它正在给主键为null的新实例。由于所选实例在getInstance()中不可用,因此将其视为新条目,而不更新现有条目
下面是components.xml中的配置
<persistence:managed-persistence-context auto-create="true"
name="entityManager"
persistence-unit-jndi-name="java:/projectEntityManagerFactory" />
在persistence.xml中
<property name="jboss.entity.manager.factory.jndi.name"
value="java:/projectEntityManagerFactory" />
<property name="hibernate.transaction.jta.platform"
value="org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform" />
我怀疑这个问题是因为迁移了seam版本
如果我遗漏了什么,请告诉我。我解决了这个问题。之前我们使用的是JSF2.1.29,现在我将JSF降级到2.1.7,这是Seam 2.3.1提供的内置版本。我解决了这个问题。之前我们使用的是JSF2.1.29,现在我将JSF降级到2.1.7,这是Seam 2.3.1内置的。O/T(可能不是)。。。Wildfly 8.2包含Mojarra 2.2.7,那么为什么要“升级”到2.1呢?(2.1是api,不是版本)Seam已经死了,为什么不迁移到CDI?Wildfly包含CDI 1.2。。。它包含Hibernate4.3.7,那么为什么要“升级”到4.0.1(为什么不使用JPA?)。如果我是对的,很可能是因为接缝的原因。。。因为我们使用的是Seam 2.3.1,它不支持JSF 2.2.7,所以我们使用的是JSF 2.1x。虽然seam已经死了,但我们希望在WildFly上运行我们的应用程序时,更改和影响更少,所以我们决定使用seam 2.3.1。我们在我们的项目中使用JPA,我在帖子中没有提到。甚至我都怀疑这与Seam有关。好的,但是现在你正在“升级”一个旧的应用程序到一个新的应用程序,从一开始就已经是一个新的旧的应用程序。。。如果我是CTO…O/T(可能不是)。。。Wildfly 8.2包含Mojarra 2.2.7,那么为什么要“升级”到2.1呢?(2.1是api,不是版本)Seam已经死了,为什么不迁移到CDI?Wildfly包含CDI 1.2。。。它包含Hibernate4.3.7,那么为什么要“升级”到4.0.1(为什么不使用JPA?)。如果我是对的,很可能是因为接缝的原因。。。因为我们使用的是Seam 2.3.1,它不支持JSF 2.2.7,所以我们使用的是JSF 2.1x。虽然seam已经死了,但我们希望在WildFly上运行我们的应用程序时,更改和影响更少,所以我们决定使用seam 2.3.1。我们在我们的项目中使用JPA,我在帖子中没有提到。甚至我都怀疑这与Seam有关。好的,但是现在你正在“升级”一个旧的应用程序到一个新的应用程序,从一开始就已经是一个新的旧的应用程序。。。如果我是CTO。。。
<persistence:managed-persistence-context auto-create="true"
name="entityManager"
persistence-unit-jndi-name="java:/projectEntityManagerFactory" />
<property name="jboss.entity.manager.factory.jndi.name"
value="java:/projectEntityManagerFactory" />
<property name="hibernate.transaction.jta.platform"
value="org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform" />