gpt4 book ai didi

jsf - 如何注入(inject)@FacesConverter?

转载 作者:行者123 更新时间:2023-12-03 21:18:10 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How to inject @EJB, @PersistenceContext, @Inject, @Autowired, etc in @FacesConverter?

(5 个回答)


6年前关闭。




我写了一个转换器。我正在使用 CDI 和注入(inject)并行。在这种情况下,类不会被注入(inject)。我怎样才能使注入(inject)成为可能?

@FacesConverter(forClass = MyClass.class)

public class MyConverter implements Converter{

@EJB
private ClassForEJB classForEJB;

@Inject
private ClassForInject classForInject;

// Converter Methods
}

最佳答案

@FacesConverter不是合格的注入(inject)目标。将其替换为 @ManagedBean@Named .如果您也想使用 CDI,请使用 @Named .

@Named
@ApplicationScoped // I assume that your converter doesn't have any state.
public class MyConverter implements Converter {
// ...
}
您只需要更改在 View 中引用它的方式。你不能依赖 forClass了。您需要将其明确指定为 #{myConverter} .
<h:inputSomething ... converter="#{myConverter}" />
或者
<h:inputSomething ...>
<f:converter binding="#{myConverter}" />
</h:inputSomething>
如果确实需要保留 @FacesConverter赞成 forClass ,那么您需要通过 JNDI 手动获取 EJB。 this blog article 中显示了一个具体示例。 .但是,对于 CDI bean,我不能说。
JSF 人员已经确认了这个令人尴尬的疏忽,他们将制作 @FacesConverter即将推出的 JSF 2.2 中符合条件的注入(inject)目标,另见 JSF spec issue 763 JSF 2.3。
也可以看看:
  • How to inject @EJB, @PersistenceContext, @Inject, @Autowired, etc in @FacesConverter?

  • 更新 如果您碰巧使用 JSF 实用程序库 OmniFaces ,或者从它的 1.6 版开始开放使用它,当只是在 /WEB-INF/lib 中有 OmniFaces JAR 时, 所有 @FacesConverter s (和 @FacesValidator s) 在你的 webapp automatically无需任何额外努力即可获得 CDI 和 EJB 注入(inject)的资格。

    关于jsf - 如何注入(inject)@FacesConverter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13156671/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com