我在这里有一个非常基本的设置:
@Named
@ApplicationScoped
public class TalentIdConverter implements Converter {
@EJB
private EntityManagerDao em;
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
if (Strings.isNullOrEmpty(value)) {
return null;
}
return em.find(Talent.class, Long.parseLong(value));
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
return String.valueOf(((Talent) value).getId());
}
}
// Manager.class
public class Manager {
@Inject @Param(converterClass = TalentIdConverter.class, name = "talentId")
private ParamValue<Talent> curTalent
@PostConstruct
public void init() {
// use curTalent.getValue()
}
}
但是每次TalentIdConverter.getAsObject
调用em
都是空的。有人能告诉我这是为什么吗?我也试过@FacesConverter
在转换器上使用,但行为没有改变。
这是在 Wildfly-8.0.0.Beta1 上使用 Weld-2.1.0.CR1 和 Omnifaces-1.6.3