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>