我有一个简单的 xhtml 页面:
<h:form>
<p:dataTable var="customer" value="#{customersTableBackingBean.allCustomers}">
<p:column headerText="First Name">
<h:outputText value="#{customer.contactFirstName}" />
</p:column>
<p:column headerText="City">
<h:outputText value="#{customer.city}" />
</p:column>
</p:dataTable>
</h:form>
当我的 CustomersTableBackingBean.java 如下:
@ManagedBean
@RequestScoped
public class CustomersTableBackingBean {
@EJB(name = "#{customersService}")
CustomersService customersService;
public List<Customers> getAllCustomers(){
return customersService.getAllCustomers();
}
public String sayHello(){
return "Hello from a managed bean!";
}
}
我看到一些从数据库中提取的数据,如预期的那样在 index.xhtml 上。
但是,当我将@ManagedBean注释更改为@Named并导入:javax.inject.Named时 index.xhtml 中没有数据。
这个结构有什么问题?
如何使用 CDI bean 而不是 JSF ManagedBean?
(我有一个空的 beans.xml 文件。)