JSF配置注释未处理



我正在JBoss AS 6上运行一个JSF 2应用程序。

不知怎的,容器没有处理注解,比如@FacesComponent或@FacesValidator等。如果我用@FacesValidator("fooValidator")注释Bean,并尝试将某个组件上的validatorId设置为"fooValidator",我得到:

Caused by: javax.faces.FacesException: Expression Error: Named Object: fooValidator not found.
at com.sun.faces.application.ApplicationImpl.createValidator(ApplicationImpl.java:1530) [:2.0.3-]
...

但是,如果我添加

    <validator>
      <validator-id>fooValidator</validator-id>
      <validator-class>foo.MyClass</validator-class>
    </validator>

对我的faces-config.xml来说,一切都如预期。组件和转换器也是如此。

知道为什么不处理注释吗?我没主意了。。。

提前感谢。。。

明白了。它和这个非常相似:为什么不';t JSF 2.0 RI(Mojarra)扫描我的类';注释?

我的项目使用了一个瘦war,所以war中的lib文件夹是空的/不存在的。更糟糕的是,控制器豆不在战争中,而是在一个单独的罐子里。由于这个jar不在战争中,jsf注释处理器不会扫描它

我想,我会重组这个项目,很可能会放弃这场骨瘦如柴的战争。这应该可以解决问题。

那么,您在托管bean上使用的是@Named而不是@ManagedBean?:)

如果faces-config.xml没有声明为符合JSF 2.0规范,就会发生这种情况。请确保根声明如下所示:

<?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">
    <!-- config here -->
</faces-config>

最新更新