Список из оператора SQL не заполнен в управляемом бине ArrayList - PullRequest
0 голосов
/ 20 июня 2019

Database.java заполняет список с результатами, называемыми «results», в управляемом компоненте с именем CategoryBean.java, я пытаюсь реализовать эти результаты в массиве с именем «category». В конце концов, этот список должен быть виден в category.xhtml. Где-то в этом процессе есть ошибка в моем коде. Я совершенно новичок в Java (и не смог найти решение по другой теме), поэтому вся помощь приветствуется.

Что касается базы данных, таблица «Категории» имеет два атрибута: - category_Id (int) - описание (строка)

Database.java

public List<Category> getCategories()

                throws SQLException, NamingException {
            List<Category> result = new ArrayList<Category>();
            String sql = "select * from categories order by description";
            Connection connection = null;
            PreparedStatement preparedStatement = null;
            ResultSet resultSet = null;

            try {

                connection = getConnection();
                preparedStatement = connection.prepareStatement(sql);
                resultSet = preparedStatement.executeQuery();
                while (resultSet.next()) {
                    Category category = new Category();
                    category.setCategoryId(
                            resultSet.getInt("category_id"));
                    category.setDescription(
                            resultSet.getString("description"));
                    result.add(category);

                }
            } finally {

                if (resultSet != null && !resultSet.isClosed()) {
                    resultSet.close();
                }
                if (preparedStatement != null
                        && !preparedStatement.isClosed()) {
                    preparedStatement.close();
                }
                if (connection != null && !connection.isClosed()) {
                    connection.close();
                }

            }

            return result;

        }

    }

CategoryBean.java

public class CategoryBean implements Serializable {
        private Database db = new Database();
        private ArrayList<Category> categories;

        public ArrayList<Category> getCategory(){

            if (categories == null) {
                categories = new ArrayList<>();
            }

            try {   
                categories.addAll(db.getCategories());
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (NamingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            return categories;
        }

    }

Category.xhtml

<head>
    <title>Categories</title>
    <link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
    <h:outputLabel value="Categories" styleClass="kop" />
    <h:body styleClass="body" />
    <p />
        <h:dataTable value="#{categoriesBean.categories}" var="item">
            <h:column>
                <f:facet name="header">
                    <h:outputLabel value="description" />
                </f:facet>
                <h:outputLabel value="#{item.description}" />
            </h:column>
    </h:dataTable>
</body>

1 Ответ

0 голосов
/ 21 июня 2019
private Database db = new Database();
    private ArrayList<Category> categories;

    public ArrayList<Category> getCategory(){

        if (categories == null) {
            categories = new ArrayList<>();
        }

        try {   
            categories.addAll(db.getCategories());

В вышеприведенной части вы объявили новую Database (), но не указали в ней никакого значения, вы должны установить объекты Category (со значением) в объект db.например,

db.setCategories(categoryList) // with values set
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...