1

faces-config.xml에서 bean의 속성 (응용 프로그램 범위)을 initiliaze하고 싶습니다. 나는 성공하지 않고 다른 구성을 시도했다. 라이브러리 레벨에서 저는 jsf 2.2 - jboss-jsf-api_2.2_spec.jar를 사용하고 있습니다. 프로젝트 레벨 faces-config는 2.0 버전으로 구성됩니다. 그게 문제인지 나는 모른다. JBDS 7은 다른 프로젝트 패싯과 충돌하는 2.2 비컨으로 바꾸지 않습니다. 다른 세션 범위 빈에 appBean @Inject 속성이 jsf 2 애플리케이션 범위 bean firing faces-config.xml

public class ApplicationBean implements Serializable { 

    private boolean debug; 
    private String cookieNameLocale; 

    //respectively getters and setters 
} 

을 initiliazed되지 않습니다

이 응용 프로그램의 범위 콩입니다 얼굴-config.xml에

<?xml version="1.0" encoding="UTF-8"?> 
<faces-config version="2.0" xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation=" 
     http://java.sun.com/xml/ns/javaee 
     http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">  
    <managed-bean> 
     <managed-bean-name>appBean</managed-bean-name> 
     <managed-bean-class>package.ApplicationBean</managed-bean-class> 
     <managed-bean-scope>application</managed-bean-scope> 
     <managed-property> 
      <property-name>cookieNameLocale</property-name> 
      <property-class>java.lang.String</property-class> 
      <value>someText</value> 
     </managed-property> 
     <managed-property> 
      <property-name>debug</property-name> 
      <property-class>boolean</property-class> 
      <value>true</value> 
     </managed-property> 
    </managed-bean> 
    <application> 
     <locale-config> 
      <default-locale>xx_XX</default-locale> 
      <supported-locale>xx_XX</supported-locale> 
     </locale-config> 
     <resource-bundle> 
      <base-name>locale</base-name> 
      <var>i18n</var> 
     </resource-bundle> 
    </application> 
</faces-config> 

입니다. 오류가 없으며 세션 빈 앞에 appBean이 만들어집니다 (인쇄 할 @PostConstruct 사용)

답변

3

<managed-bean>faces-config.xml의 항목은 기본적으로 새 @ManagedBean을 선언합니다. 나는. JSF 관리 빈. 그러나 @Inject을 사용하면 기본적으로 CDI 관리 빈을 주입합니다.

이들은 상호 배타적 인 두 가지 방법으로 콩을 관리합니다. 사실상 동일한 bean 클래스의 인스턴스 2 개 (JSF는 faces-config.xml을 통해 관리되고 다른 인스턴스는 주석을 통해 CDI로 관리 됨)로 끝납니다. JSF에 의해 관리되는 속성 만 해당 속성을 설정합니다.

당신은했습니다 2 선택하십시오 JSF가 관리 Bean으로

  1. 사용 @ManagedProperty 그것을 주입. 그러나 이것은 차례대로 Acceptor 자체가 JSF 관리 Bean이기도합니다.

  2. faces-config.xml 접근 방식을 모두 잊어 버리십시오. 메시지를 web.xml 또는 서버 구성의 JNDI 자원으로 정의한 다음 @Resource을 사용하여 삽입하십시오. 또는 .properties 파일 설정 또는 <context-param> 항목을 web.xml에 입력하십시오. CDI는 상자를 삽입하는 방법을 제공하지 않지만 CDI Producer을 사용하여 사용자 정의 주석을 만들 수 있습니다.