我在Entreprise应用程序中使用带有PrettyFaces 3.3.3的JSF 2.2。
我用注解映射了我的Bean(AdminCompaniesController.java):
@ManagedBean
@ViewScoped
@URLMappings(mappings={
@URLMapping(id = "admin-companies", pattern = "/admin/companies", viewId = "/admin/companies.jsf")
})
public class AdminCompaniesController implements Serializable {
@EJB
private CompanyService companyService;
private Collection<Company> companies = new ArrayList<>();
Company company;
@PostConstruct
public void init() {
companies = companyService.getAllCompanys();
}
}
在我看来,我显示了一个包含数据的表(company.xhtml):
<ui:repeat value="#{adminCompaniesController.companies}" var="company">
<tr>
<td><h:outputText value="#{company.name}" /></td>
</tr>
</ui:repeat>
这很好,我有29家公司。但是,一旦我将我的Bean命名为@ManagedBean(name = "companiesBean")
,我就会丢失所有数据。视图显示0结果。
这与bean作用域有关吗?或者EJB注入也需要一个名称?
您需要更新.xhtml中的EL表达式以匹配bean的名称。如果bean被命名为"companiesBean",那么你的.xhtml不应该是:
<ui:repeat value="#{adminCompaniesController.companies}" var="company">
<tr>
<td><h:outputText value="#{company.name}" /></td>
</tr>
</ui:repeat>
应该是以下内容:
<ui:repeat value="#{companiesBean.companies}" var="company">
<tr>
<td><h:outputText value="#{company.name}" /></td>
</tr>
</ui:repeat>
注意<ui:repeat value='...'>
属性中的更新值。