我遇到GlassFish 4.1.1和Payara 4.1.153 +的问题。
POJO转换器中的@Inject
点不再起作用。我错过了什么? FacesConverter中有什么变化吗?
@FacesConverter("bkkConverter")
public class BkkConverter implements Converter,Serializable
{
@Inject
private BkkBean bkkBean;
...
bkkBean.fetchFromDatabase(...); <- NPE
变量bkkBean
现在仍为null
。 Converter
本身有效(getAsObject
/ getAsString
),但没有@Inject
?
它仍适用于GlassFish 4.1。
答案 0 :(得分:3)
您依赖于未指定/未记录的功能。由于遗忘的实验/回滚,Mojarra 2.2在版本2.2.9之前的@Inject
,@FacesConverter
和@FacesValidator
中无意支持@FacesComponent
。预计支持将出现在Mojarra 2.3中,其中需要额外的注释属性,如@FacesConverter(managed=true)
中所示。另见a.o. issue 3552
在带有CDI 1.1的JSF 2.2中,最好的办法是通过CDI
实用程序类手动获取bean。
BkkBean bkkBean = CDI.current().select(BkkBean.class).get();
// ...
或者,您可以安装OmniFaces,以便在@FacesConverter
和@FacesValidator
@Inject
(和@EJB
)的透明支持