java - JSF - 无法显示来自 ManagedBean 的对象列表

标签 java eclipse jsf tomcat dao

也许有人知道为什么我无法在我的应用程序中显示类别列表。文件 categories.xhtml 仅显示单词类别。 Class Category 在构造函数中设置 id 和 name。

类别.xhtml

<ui:component>
    <h:form>
        <h4>Categories</h4>
        <ul>
            <ui:repeat var="category" value="#{categoriesBean.modelCategories}">
                <li><h:outputText value="#{category.name}">
                    </h:outputText>
                     </li>
            </ui:repeat>
        </ul>
    </h:form>
</ui:component>

CategoriesBean.java

    @ManagedBean
    @RequestScoped
    public class CategoriesBean {

        private ListDataModel<Category> modelCategories = new ListDataModel<Category>();

public ListDataModel<Category> getModelCategories() {
    return modelCategories;
}

public void setModelCategories(ListDataModel<Category> modelCategories) {
    this.modelCategories = modelCategories;
}
 public CategoriesBean() {
            modelCategories.setWrappedData(DAO.getDAO().getCategories());
        }
    }

DAO.java

public class DAO {

    private static DAO instance = new DAO();
    private List<Category> categories = new ArrayList<Category>();

    {
      Category smartphones = new Category(1, "Smartphones");    
      Category consoles = new Category(2, "Consoles");
      categories.add(smartphones);
      categories.add(consoles);

    }

    public static DAO getDAO() {
        return instance;
    }

    public List<Category> getCategories() {
        return this.categories;
    }

这是网站来源:

<form id="j_idt2" name="j_idt2" method="post" action="/Shop/categories.xhtml" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="j_idt2" value="j_idt2" />


        <ul>
        </ul><input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="H4sIAAAAAAAAAJVSQWvUQBR+Tbp2G1Zpt9KL6KkIgmSp2IuLuIvt0sXULqSCxYPOZqebWSfJOPOym/RQ8B8InoSKVw/e/AXVgyAo6FFv3j16dyaN3R704EBe8vK+9+Z773tvfkJFKAmLIzImboqMu5tEhVtEVOa+Hb1ffvTFBqsDDk/IoEMCTGQX5jGUVIUJH2TiVgvMqU2q2i7ox0Y4M3rIBriaSlh64BV1OYmH7nZ/RANsPvt8/9WCusItgEzohIrQJ30CB2Ab70CCa3Iyd48EVLlBEokkpjG697q3/3yv9GQiqMT8Ds0VlKeuC0o4N71wI06j00GB4BBEyfopUqWbXpo23ZaS5B5TmD39evHFB/LShpkuzCq2TwuW9mTWWJ10+e/sfCRIN/VMqPTJmMrdj29vPj/8tGWB5cF8wIlSd0lEEerFSBqGYcPXZOJh0wNH6ZxBUQNh+RjBkoZPJSOc7ZM+p81MiLEZEyhja7qbS/p6V6VxScZYTlG57V7P626slzjNee0fQBYJ7q7TPZJy7Bz/XGkLwfOd5DGNf72+unvYGrVqZnaTC7DYCDS/YSKZrpGFGHGAme13338cZZmWbe3/ZOtJNtblTgtk+M4hnJ+KtBMSbEvqa7Im6GigVShhlc0VE3FKx9i6kflssYHXbhSv6yfLVTWrpsPVso/cOBUDWj3BWEJkvwHxOyj9FQMAAA==" autocomplete="off" />
</form>

最佳答案

使用 ui:repeat 时不需要调用 DataModel 列表:

        <ui:repeat var="category" value="#{categoriesBean.categories}">
            <li><h:outputText value="#{category.name}">
                </h:outputText>
                 </li>
        </ui:repeat>

然后,当您调用服务时,大部分时间都是在数据库交互中将服务注入(inject)到 bean 中。为此,您应该使用 @PostConstruct 属性(在您的情况下不需要)。

    @ManagedBean
    @RequestScoped
    public class CategoriesBean {
        // this is not needed but that's how you'd get from db.
        //@Inject
        //private MyService service;

        private List<Category> categories;

       // getters and setters

       @PostConstruct // in your case this is not needed but it is if you use injection
       public void init() {
           categories = yourService.getCategories(); // this is not needed.
           //instead you can add it like this.
           categories = new ArrayList<Category>();
           categories.add(1, "blabla");
        }
   }

关于java - JSF - 无法显示来自 ManagedBean 的对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32542031/

相关文章:

java - 使用 selenium 将内容拖放到文本框中

java - 如何在 vim + eclim 中显示 java 函数的参数?

JSF 2.0 导航无法正常工作

java - 我可以使用 java HtmlUnit 库从 linkedIn 中提取信息吗?

Java 泛型、对象和通配符的差异和说明

java - 在 Eclipse 中使用 Maven 设置 GWT 项目

eclipse - Eclipse Che 可以用于传统的单体应用程序开发吗?不使用 Docker 的应用程序

java - 比较字符串与 JSTL

javascript - 将参数传递给 p :remoteCommand from JavaScript

java - 尝试使用 HttpClient 设置 session cookie