小编cgh*_*lai的帖子

在OmniFaces @Eager豆注入@EJB导致"重度:无有效EE环境org.omnifaces.cdi.eager.EagerBeansRepository的注射液"

使用@ApplicationScoped @Named @Eager,my @EJB-injected @Statelessbean没有正确实例化并进行评估null.

我有一个@ApplicationScoped @ManagedBean(eager=true)习惯于安排一些工作的人.一些@Statelessbean使用@EJB注释注入,并且工作正常.

在转向CDI注释时,我添加了OmniFaces@Eager注释作为@ManagedBean(eager=true)标准CDI中缺少的注释:

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.ejb.EJB;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import javax.inject.Named;
import org.omnifaces.cdi.Eager;

@Named
@ApplicationScoped
@Eager
public class MyScheduler implements Serializable {

    @EJB
    private MyService myService;
    @Inject
    private MyNamedBean myNamedBean;

    @PostConstruct
    public void init() {
        setupSchedulers();
    }

    @PreDestroy
    public void destroy() {
        destroySchedulers();
    }
    //...
}
Run Code Online (Sandbox Code Playgroud)

使用此设置,@PostConstruct在应用程序启动时正确调用该方法(尽管它似乎甚至在初始化上下文之前运行),但随后myService进行求值null.

在日志中,将显示以下警告: …

ejb glassfish eager-loading cdi omnifaces

5
推荐指数
1
解决办法
1339
查看次数

EL中的#{component}究竟是什么?

根据https://code.google.com/p/primefaces/issues/detail?id=4720,ComponentUtils.resolveWidgetVar(String expression, UIComponent component)自2013年以来,该功能在Primefaces中可用.它可以通过该"#{p:widgetVarFromContext(searchExpression, component)}"功能在EL中使用.

这在多个组件具有相同ID NamingContainer但不同但仍存在于同一视图中的情况下非常有用.在这种情况下,该#{p:widgetVar(searchExpression)}函数仅返回找到的最后一个函数.

我不明白如何引用UIComponent必须作为EL的第二个参数传递.上面提到的错误报告表明我们可以使用它来引用它#{component}.任何人都可以提供一个例子吗?

jsf el uicomponents

3
推荐指数
1
解决办法
1886
查看次数

标签 统计

cdi ×1

eager-loading ×1

ejb ×1

el ×1

glassfish ×1

jsf ×1

omnifaces ×1

uicomponents ×1