ManagedBean在命名时丢失数据



我在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='...'>属性中的更新值。

相关内容

  • 没有找到相关文章

最新更新