开发者

JSF config-annotations not processed

I am running a JSF 2 application on JBoss AS 6.

Somehow the Annotations, like @FacesComponent or @FacesValidator, etc are not processed by the container. If I annotate a Bean with @FacesValidator("fooValidator") and try to set the validatorId on some component to "fooValidator" I get:

Caused by: javax.faces.FacesException: Expression Error: Named Object: fooValidator not found.
at com.sun.faces.ap开发者_开发技巧plication.ApplicationImpl.createValidator(ApplicationImpl.java:1530) [:2.0.3-]
...

However, If I add

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

To my faces-config.xml everything works as expected. Same goes for components and converters.

Any idea why the annotations are not processed? I am out of ideas...

Thanks in advance...


Got it. It is very similar to this one: Why doesn't JSF 2.0 RI (Mojarra) scan my class' annotations?

My project uses a skinny war, so the lib folder in the war is empty/nonexistent. And to make it worse, the Controller Beans are not located in the war but in a seperate jar. As this jar is not in the war, the jsf annotation processor does not scan it.

I guess, I will restructure the project and likely throw out the skinny war. That should fix it.


So, you were using @Named instead of @ManagedBean on your managed beans? :)

This can happen if the faces-config.xml is not declared conform JSF 2.0 spec. Ensure that the root declaration look like this:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜