@FacesConverter
和@FacesValidator
在JSF 2.2之前不适用于EJB或托管bean注入点。
它们应该使用额外的managed
属性与@FacesConverter
和@FacesValidator
一起在JSF 2.3中工作(目前仅作为milestone可用),如此处所述。
javax.faces.convert.Converter
javax.faces.validator.Validator
javax.faces.component.behavior.Behavior
@FacesConverter
、@FacesValidator
和@Behavior
上的一个名为"managed"的新属性设置为true时,它们才会成为注入目标。 此外,通过将@Qualified
注释添加到其定义中,这三个注释都已升级为CDI限定符。
@FacesConverter
、@FacesValidator
和@Behavior
的现有属性未被修改,这意味着它们全部是绑定,就像新属性"managed"一样。
然而,在Mojarra 2.3.0-m02中,属性managed
不可用。
这是因为里程碑吗?它是否依赖于特定的Weld/CDI版本?我目前正在使用GlassFish Server 4.1。此处提到了不同的构件版本here(服务器版本提供的默认Weld版本为2.2.2 final)。
faces-config.xml
仍然符合JSF 2.2时,它失败了。更新为JSF 2.3后,它可以正常工作。你的faces-config.xml
是否符合JSF 2.3?即/web-facesconfig_2_3.xsd
和version="2.3"
(如果IDE报告XSD不可用,请忽略它)。 - BalusC/web-facesconfig_2_3.xsd
和version="2.3"
,浏览器显示 500 (内部服务器错误)。这在我的真实应用程序中是无法追踪的。然而,在一个只有单个 XHTML 文件的项目中,IDE 还显示@FacesConverter(managed = false)
和@FacesValidator(managed = false)
作为默认值,但在真实应用程序中,这是一个编译时错误 -cannot find symbol symbol: method managed() location: @interface FacesValidator
。 - Tinyjavaee.jar
这样的东西实现的? - BalusC