JSF配置注释未处理

时间:2011-06-16 09:31:23

标签: jsf annotations jboss6.x

我正在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一切都按预期工作。组件和转换器也是如此。

知道为什么没有处理注释?我没有想法......

提前致谢...

2 个答案:

答案 0 :(得分:3)

知道了。它与此非常相似:Why doesn't JSF 2.0 RI (Mojarra) scan my class' annotations?

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

我想,我将重组该项目,并可能抛出一场瘦弱的战争。那应该解决它。

答案 1 :(得分:0)

那么,您在托管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>