简体   繁体   English

将GlassFish 4.1升级到4.1.1后,@ Inject在@FacesConverter中不起作用

[英]@Inject doesn't work in @FacesConverter after upgrade GlassFish 4.1 to 4.1.1

I have a problem with GlassFish 4.1.1 and Payara 4.1.153+. 我有GlassFish 4.1.1和Payara 4.1.153+的问题。

The @Inject points in the POJO converters no longer work. POJO转换器中的@Inject点不再起作用。 What did I miss? 我错过了什么? Has something changed in FacesConverter? FacesConverter有什么变化吗?

@FacesConverter("bkkConverter")
public class BkkConverter implements Converter,Serializable
{

  @Inject
  private BkkBean bkkBean;
  ...
  bkkBean.fetchFromDatabase(...); <- NPE

The variable bkkBean remains null now. 变量bkkBean现在保持为null The Converter itself works ( getAsObject / getAsString ), but no @Inject ? Converter本身工作( getAsObject / getAsString ),但没有@Inject

It still works on GlassFish 4.1. 它仍适用于GlassFish 4.1。

You were relying on an unspecified/undocumented feature. 您依赖于未指定/未记录的功能。 Mojarra 2.2 unintentionally supported @Inject in @FacesConverter , @FacesValidator and @FacesComponent before version 2.2.9 as consequence of a forgotten experiment/rollback. 钻嘴鱼科2.2无意支持@Inject@FacesConverter@FacesValidator@FacesComponent 2.2.9版本作为一个被遗忘的实验/回退的后果之前。 The support is expected to come in Mojarra 2.3 whereby an additional annotation attribute is required as in @FacesConverter(managed=true) . 预计支持将出现在Mojarra 2.3中,因此需要额外的注释属性,如@FacesConverter(managed=true) See also ao issue 3552 . 另见ao issue 3552

In JSF 2.2 with CDI 1.1 your best bet is to manually grab the bean via CDI utility class. 在带有CDI 1.1的JSF 2.2中,最好的办法是通过CDI实用程序类手动获取bean。

BkkBean bkkBean = CDI.current().select(BkkBean.class).get();
// ...

Alternatively, you can install OmniFaces in order to get transparent support for @Inject (and @EJB ) in @FacesConverter and @FacesValidator 或者,您可以安装OmniFaces ,以便在@FacesConverter@FacesValidator获得@Inject (和@EJB )的透明支持

See also: 也可以看看:

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM