Аннотация управляемого компонента не работает в JSF 2.0

Я обнаружил странную проблему с аннотациями в bean-компоненте.

Содержимое index.xhtml:

<h:outputText value="#{ejb.helloWorld}" />

Содержимое Ejb.java:

package bean;

import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

    @ManagedBean(name="ejb")
    @SessionScoped
    public class Ejb implements Serializable
    {
        public String getHelloWorld()
        {
            return "Hello World";
        }
    }

Из того, что мы видим выше, я должен иметь возможность вызывать метод bean-компонента... но я не могу, он будет работать только, если я управляю bean-компонентом в faces-config.xml файле с содержимым:

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

          <managed-bean>
              <managed-bean-name>ejb</managed-bean-name>
              <managed-bean-class>bean.Ejb</managed-bean-class>
              <managed-bean-scope>session</managed-bean-scope>
          </managed-bean>
</faces-config>

Вопросы:

  1. Почему я столкнулся с такой ситуацией?
  2. Как решить эту проблему?

Я использую:

  • JSF 2.0 (импортировано в библиотеку)
  • JBoss Server 4.2

person xyz    schedule 10.05.2012    source источник
comment
Для JSF 2.0 вам действительно следует использовать JBoss AS7, так как он сертифицирован JEE6.   -  person CoolBeans    schedule 11.05.2012


Ответы (1)


Мое дикое предположение состоит в том, что используется JSF 1.2, связанный по умолчанию с JBoss 4.2 (JBoss может не заботиться о версии JSF). В результате аннотации игнорируются, используется файлfaces-config.xml.

Попробуйте использовать предложенную конфигурацию здесь (это кешированная страница Google).

person Piotr Kochański    schedule 10.05.2012