2013-02-20 2 views
0

Я разрабатываю приложение jsf. У меня таблица MySQL Student состоит из 30-40 столбцов и 600 строк. Вот код в StudentBean:ограничение количества строк, которое может отображаться в jsf

@ManagedBean(name = "student") 
@SessionScoped 
public class StudentBean implements Serializable{ 

private List<Student> studentlist = new ArrayList<Student>(); 
private Student student = new Student(); 
private HtmlDataTable datatable; 
private HtmlInputHidden studentnpm = new HtmlInputHidden(); 
private String querybynpm; 
private String querybyangkatan; 
private String status; 
private String result; 

public String init() { 

    try { 
     Class.forName(JurusanConection.getDriver()); 
    } catch (ClassNotFoundException e) { 
     System.out.println(e.getMessage()); 
    } 


    try { 
     Connection con = DriverManager.getConnection(JurusanConection.getUrl(), 
       JurusanConection.getUser_name(), JurusanConection.getPass_word()); 

     String query = "SELECT * FROM student"; 
     Statement ps = con.createStatement(); 
     ResultSet rs = ps.executeQuery(query); 

     while (rs.next()) { 
      Student students = new Student(); 
      students.setNpm(rs.getString("npm")); 
      students.setNama(rs.getString("nama").toString()); 
      //setter and getter 
      students.setTanggalregistrasi(rs.getString("tanggalregistrasi").toString()); 
      students.setDosenwali(rs.getString("dosenwali").toString()); 
      students.setEmail(rs.getString("email")); 
      students.setKelas(rs.getString("kelas")); 
      studentlist.add(students); 
     } 
     result="mahasiswa"; 
     ps.close(); 
     con.close(); 

    } catch (SQLException e) { 
     setResult(null); 
     setStatus(e.getMessage()); 
    } 
    return result; 
} 

Я не заполнять базу данных с помощью конструктора, но вызова инициализации() метод. Я получил сообщение об ошибке javax.faces.el.EvaluationException: java.lang.NullPointerException. Однако, когда я изменяю запрос, чтобы ограничить число, отображаемое 150 строкой, нет ошибки. Может ли кто-нибудь выяснить, как отобразить это 600 строк без ошибок. Спасибо ...

+0

И где вы вызываете метод 'init'. Возможно, вы хотели аннотировать метод с помощью '@ PostConstruct' для заполнения вашего списка? – partlov

+0

Почему бы вам не сказать, что такое «нуль»? – BalusC

ответ

1

Вы, вероятно, получить NullPointerExceptions на следующих небезопасных строк кода:

rs.getString("nama").toString() 
rs.getString("tanggalregistrasi").toString() 
rs.getString("dosenwali").toString() 

Это делает предположение о том, что не будет никогда быть нулевое значение для этих трех столбцов в наборе записей , Вы должны назначить это переменной и выполнить нулевую проверку перед использованием оператора ..

Кроме того, почему вы вызываете toString() здесь? ResultSet.getString метод уже возвращает объект String. Это совершенно не нужно.

+0

@partlov: init() вызывается из mahasiswa.xhtml и будет отображаться также в файле mahasiswa.xhtml. – user2090593

+0

@BalusC: Вызванный: java.lang.NullPointerException \t на beans.StudentBean.init (StudentBean.java:61) \t на sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) – user2090593

+0

да, после того, как я удалил все .ToString() в ResultSet, все строки были заполнены и отображены на веб-странице. Я проверил, что есть несколько столбцов, содержащих нулевые значения. Спасибо, ребята, проблема решена – user2090593

Смежные вопросы