JSF 2에서 faces-config.xml의 사용은 무엇입니까?


89

주석에 대한 JSF 2 큰 지원 이후, 나는 무엇을 위해 사용할지 궁금 faces-config.xml합니다. 지금 그 중요성은 무엇입니까?

즉, faces-config.xml주석 을 통해서만 수행 할 수있는 구성은 무엇 입니까?

지금 내가 사용하는 모든 것은 Spring의 EL 해결자를 선언하는 것입니다.

<?xml version="1.0" encoding="UTF-8"?>
<faces-config
    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"
    version="2.0">

    <application>
        <el-resolver>
            org.springframework.web.jsf.el.SpringBeanFacesELResolver
        </el-resolver>
    </application> 
</faces-config>

1
내장 ELResolver를 지정해야하는 이유는 무엇입니까? 나는 디자인 철학은 ... 설정보다 관례입니다 생각
masterxilo

나는 또한 <el-resolver>나의 것이 없으며 faces-config.xml완벽하게 작동합니다.
Roland

답변:


142

주석을 달 수없는 많은 것들에 여전히 사용됩니다. 예 : 사용자 정의 JSF 유효성 검사 메시지 :

<application>
    <message-bundle>com.example.i18n.messages</message-bundle>
</application>

글로벌 i18n 번들 ( <f:loadBundle>모든 뷰에서 선언 할 필요가 없음 ) :

<application>
    <resource-bundle>
        <base-name>com.example.i18n.Text</base-name>
        <var>text</var>
    </resource-bundle>
</application>

명시 적으로 지원되는 i18n 로케일 (메시지 번들 또는 리소스 번들이 있어도 선언되지 않은 항목은 무시 됨) :

<application>
    <locale-config>
        <default-locale>en</default-locale>
        <supported-locale>nl</supported-locale>
        <supported-locale>es</supported-locale>         
        <supported-locale>de</supported-locale>         
    </locale-config>
</application>

사용자 정의 보기 핸들러 :

<application>
    <view-handler>com.example.SomeViewHandler</view-handler>
</application>

위상 리스너 (아직 주석이 없습니다) :

<lifecycle>
    <phase-listener>com.example.SomePhaseListener</phase-listener>
</lifecycle>

주석을 달 수없는 관리 빈 (아래의 빈은에 현재 Date를 제공함 #{now}) :

<managed-bean>
    <description>Current date and time</description>
    <managed-bean-name>now</managed-bean-name>
    <managed-bean-class>java.util.Date</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
</managed-bean>

이러한 사용자 정의 예외 핸들러 팩토리와 같은 사용자 정의 공장, (그것도 위해 공장을 허용 FacesContext, ExternalContext, LifeCycle당신이 당신의 사용자 정의 구현을 제공 할 수있는 더 많은) :

<factory>
    <exception-handler-factory>com.example.SomeExceptionHandlerFactory</exception-handler-factory>
</factory>

일반적으로 사용되는 이름 만 지정합니다. faces-config.xmlIDE에 태그 ​​자동 완성 기능이있는 경우 모두 찾을 수 있습니다. 관리 Bean, 유효성 검사기, 변환기, 구성 요소, 렌더러 및 지점 간 탐색 사례 만 새로운 주석 및 암시 적 탐색 덕분에 더 이상 필요하지 않습니다.


7
@Matt : 모든 구성 요소 바인딩에 대한 더 나은 선언적 개요를 제공하기 위해 요청 범위에 java.util.HashMapas #{components}가 저장 되는 프로젝트가 있습니다. 예를 들면 binding="#{components.foo}"있도록 같이 참조 할 수 있습니다 #{components.foo}더 자기 문서화 및 이상 (인해 잠재적 인 이름 충돌을) 덜 위험하다 binding="#{foo}"하고 #{foo}.
BalusC 2011 년

2
또한 el-resolver를 지정하기위한 주석을 찾고있었습니다. 이제 주석을 통해 이러한 응용 프로그램 속성을 지정하는 방법이 없다고 생각합니다 ..right .. ??
Rup Majumder

@RupMajumder 그런 주석을 어디에 넣을까요? 어떤 클래스를 의미합니까? 이 속성은 전체 응용 프로그램에 분산되어 있습니다.
iozee 2014

1
FWIW, Apache Deltaspike를 사용할 때 JsfPhaseListener 주석은 faces-config.xml에서 구성 할 필요없이 위상 리스너를 사용하는 데 사용할 수 있습니다.
jpangamarca
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.