Skip to main content
 首页 » 编程设计

jsf之JSF 2 中 faces-config.xml 有什么用

2024年02月25日18三少

在 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> 

请您参考如下方法:

它仍然可以用于许多无法注释的事情。例如。自定义 JSF 验证消息:

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

全局 i18n bundle (这样您就不需要在每个 View 中声明 <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> 

自定义 view handlers :

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

Phase listeners (仍然没有注释):

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

无法注释的托管 bean(下面给出了 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.xml在你的IDE中添加自动补全标签,你就可以把它们全部找出来。由于新的注释和隐式导航,仅不再需要托管 bean、验证器、转换器、组件、渲染器和点对点导航情况。