无法使用构造函数注入托管属性

时间:2013-04-03 07:02:41

标签: jsf-2

我正在尝试注入@ManagedProperty(value =“#{ticketDataBean}”)。我能够做到这一点,但现在我已经宣布了一个构造函数,从那以后它失败了。请指导。  我的代码段

@ManagedProperty(value = "#{ticketDataBean}")
private TicketDataBean ticketDataBean; 


  public class TicketDataBean extends CreateTicketData implements Serializable {
   private static final long serialVersionUID = 1L;
private String category;
private TicketingService service;
private static final transient Logger LOGGER = LoggerFactory.getLogger(TicketDataBean.class);

public TicketDataBean(final TicketingService service) {

    final net.atos.portlet.ticketing.model.UserInfo originalUser;
    this.service = service;
    originalUser = service.getDefaultReceiver();
    receiverId = originalUser != null ? originalUser.getId() : null;
    LOGGER.info("Reciever id in ticketdatabean---->" + receiverId);
}

1 个答案:

答案 0 :(得分:0)

托管bean是POJO,因此它们需要具有非参数构造函数。如果您要初始化service,可以在@PostConstruct中执行此操作。最好为ManagedBean创建另一个service,您可以注入,或者可以创建@Singleton

@ManagedBean
@ApplicationScoped
public class TicketingService {
}

然后你可以用这种方式注入它(不要忘记添加getter / setter)

@ManagedProperty(value="#{ticketingService}")
private TicketingService service; 

您可以详细了解ManagedBeans here