Nous convertissons une application de jsf 1.2 en jsf2 dans wildfly 10, en utilisant le ressort 3.1.1 et le mojarra 2.1.29-08. Ce faisant, nous obtenons une erreur de portée comme:Portée de ressort non reconnue par JSF
The scope of the object referenced by expression #{configConstant}, request, is shorter than the referring managed beans (UserSearchBean) scope of view
Dans nos visages-config.xml, nous définissons comme UserSearchBean:
<managed-bean>
<managed-bean-name>UserSearchBean</managed-bean-name>
<managed-bean-class>com.mycompany.UserSearchBean</managed-bean-class>
<managed-bean-scope>view</managed-bean-scope>
<managed-property>
<property-name>configConstant</property-name>
<value>#{configConstant}</value>
</managed-property>
</managed-bean>
et applicationContext.xml nous avons:
<import resource="../aaconfig.xml" ></import>
Et dans ce fichier aaconfig nous avons:
<bean id="configConstant" scope="singleton"
class="com.mycompany.ConfigConstant" >
<property name="fileName">
<value>config.xml</value>
</property>
<property name="logofilename" value="${config.logofilename}" />
</bean>
D'après ce que nous avons lu, la portée singleton devrait être globale, mais le message d'erreur de wildfly indique le contraire. Nous avons ces derniers dans web.xml
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<async-supported>true</async-supported>
</servlet>
<servlet>
<servlet-name>accessaudit</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
Je viens de réaliser que d'autres haricots fonctionnent très bien, comme celui-ci. Il injecte bien avec la bonne portée. Le seul différent que je peux voir immédiatement est que configConstant a des propriétés lues dans un fichier de propriétés.
<bean id="userManager" class="com.mycompany.UserManager">
<property name="userManagerDAO">
<ref bean="userManagerDAOProxy" />
</property>
Des idées sur ce qui est le problème ou par où commencer à chercher?
Merci!
Même erreur? Est-ce que votre faces-config.xml 'ok'? Lire https://stackoverflow.com/questions/18387993/spring-jsf-integration-how-to-inject-a-spring-component-service-in-jsf-managed – Kukeltje