J'ai récupéré des données dans la classe inférieure à partir de la base de données PostgreSQL, avec succès. Les lignes de données de table dans PostgreSQL sont ajoutées dans ArrayList<> userlist
. J'ai partagé les codes corrigés.Utilisation d'informations extraites de la méthode de l'autre classe
class UserList extends ArrayList<User> {
// as in comments said it seems really bad idea is to extend ArrayList. So, avoid it!
}
La classe utilisateur est:
public class User {
private String firstName;
private String lastName;
public User(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public void calculateSimilarityUser(User u){
.... //some codes
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
La classe UserDAO est:
public class UserDAO {
static Connection currentCon = null;
static ResultSet rs = null;
private ArrayList<User> userlist = new ArrayList<>();
public ArrayList<User> LoadFromDatabase(){
PreparedStatement userinfoStmt = null;
String loadUsersInfo = "SELECT * FROM userinfo";
try {
currentCon = ConnectionManager.getConnection();
userinfoStmt = currentCon.prepareStatement(loadUsersInfo);
rs = userinfoStmt.executeQuery();
while (rs.next()) {
User us = new User(rs.getString("firstname"), rs.getString("lastname"), rs.getInt("index"));
userlist.add(us);
}
userinfoStmt.close();
currentCon.close();
} catch (Exception e) {
}
return userlist;
}
Le index.jsp
<%
UserDAO inf= new UserDAO();
ArrayList<User> userList = inf.LoadFromDatabase();
Recommender rc = new Recommender(userList);
%>
Qu'est-ce que null? Vous appelez la méthode 'LoadFromDatabase()' non conventionnellement nommée, mais sans rien faire avec le reuslt, pour autant que je puisse le voir. (Vous avalez également des exceptions, et ne créez pas une nouvelle liste sur chaque appel, ce qui semble être une mauvaise idée, mais c'est une question différente.) –
Une autre vraiment très mauvaise idée est d'étendre ArrayList. C'est inutile, et cela rend confus pour vous. La liste des utilisateurs est la liste ** renvoyée ** par la méthode 'users.LoadFromDatabase()'. Les utilisateurs ne sont pas eux-mêmes objets. Et toutes ces variables d'instance doivent être des variables locales de la méthode. –
Merci pour vos réponses. –