2011-09-22 9 views
8

Utilizando JBoss 6.0.0.Final, Richfaces 3.3.3.Final, MyFaces 2.0.6, facelets 1.1.15.B1 (una limitación de RF 3).Cómo mezclar anotaciones con faces-config.xml

Estoy en un proyecto heredado que contiene cientos de beans definidos en faces-config.xml. Me gustaría mantener los definidos en faces-config.xml pero usar anotaciones para beans nuevos. Sin embargo, cuando lo he intentado no he tenido éxito. Los beans definidos por la anotación, es decir,

@ManagedBean 
@ViewScoped 
public class Foobar implements Serializable { 
    // ... 
} 

No se puede acceder al bean desde mi página JSF. Creo que he especificado la versión 2.0 en mi faces-config.xml usando el encabezado correcto.

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

¿Hay algo más que tenga que hacer en el faces-config.xml para permitir anotaciones para ser utilizado también?

Respuesta

9

frijoles con anotaciones se producirá un error en los siguientes casos:

  1. /WEB-INF/faces-config.xml no se ha declarado para ajustarse a JSF 2.0.

  2. @ManagedBean es de javax.annotation paquete en lugar de javax.faces.bean.

  3. Bean clase no se ha compilado/incorporado en WAR /WEB-INF/classes.

  4. Bean se incluye en un archivo JAR que falta /META-INF/faces-config.xml.

  5. Un nombre de bean administrado incorrectamente se está utilizando en EL, debería ser el nombre de la clase de bean con el 1er carácter más bajo encajonado según las especificaciones de Javabeans. Entonces, en su ejemplo particular, #{fooBar} debería funcionar, pero #{FooBar} no.

  6. Webapp es realmente usando JSF 1.x libs (puede leer la versión JSF en el registro de inicio del servidor).

+1

Disculpa, debería haber especificado que no estoy intentando usar la configuración de anotación y faces-config.xml para el mismo bean. Quiero agregar nuevos beans sin tener que migrar los beans viejos usando faces-config.xml – user959690

+0

Actualicé la respuesta. – BalusC