학생부 프로그램을 만드는 중에 오류가 발생했다.
오류코드를 분석해보니 controller와 DAO 사이에서 발생한 것으로 확인되었다.

먼저 DAO를 살펴보았다.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
public ArrayList<StudentDTO> selectAll(StudentDTO studentDTO) { // 내가 가지고있는 데이터 전부를 넘겨주면됨
System.out.println(" sevice.model.StudentDAO selectAll() 시작");
ArrayList<StudentDTO> datas=new ArrayList<StudentDTO>();// 반환할 배열생성
if(studentDTO.getCondition().equals("All")) { // 컨디션의 값이 All이라면
for(StudentDTO data:this.datas) { // 입력받은 데이터를 배열과 대조해서
datas.add(data); // 새로운 배열에 추가
}
System.out.println(" sevice.model.StudentDAO selectAll() 종료");
}
/*
ArrayList<StudentDTO> datas=new ArrayList<StudentDTO>();
return datas;
// null이 반환되는 경우는 없다. = 생성자를 만들었으므로(안만들었어도 기본생성자가 있기 때문에)
// 다만, .size()가 0일수는 있다.
*/
else if(studentDTO.getCondition().equals("NAME")) { // 컨디션의 값이 NAME이라면
System.out.println(" sevice.model.StudentDAO selectAll(NAME) 시작");
for(StudentDTO data:this.datas) { // 입력받은 데이터를 배열과 대조해서
if(data.getName().contains(studentDTO.getName())) { // 입력받은 이름이 데이터의 이름에 포함되어 있으면
datas.add(data); // 새로운 배열에 추가
}
}
System.out.println(" sevice.model.StudentDAO selectAll(NAME) 종료");
}
return datas;// 배열들 모두 반환
}
|
cs |
그 후 controller를 살펴보았다.
|
1
2
3
4
5
6
7
8
|
else if(action==2) {
StudentDTO studentDTO=new StudentDTO();
ArrayList<StudentDTO> datas=model.selectAll(studentDTO);// 가독성 때문에 변수설정
view.print05(datas); // 목록을 줘야함
}
|
cs |
확인해보니 condition값을 setter를 안해줘서 생긴 오류였다.
condition값이 없으니까 어떤 조건문도 들어가지 못하여
selectAll 메서드를 사용할 수 없었다.
controller에 전체출력을 할수있는 "ALL"값을 set해주니 오류없이 잘 돌아갔다.
|
1
2
3
4
5
6
7
8
|
public void start() {
else if(action==2) {
StudentDTO studentDTO=new StudentDTO();
studentDTO.setCondition("All");
ArrayList<StudentDTO> datas=model.selectAll(studentDTO);// 가독성 때문에 변수설정
view.print05(datas); // 목록을 줘야함
}
|
cs |
위 코드의 4번째줄에 studentDTO.setCondition("All"); 를 추가했다.
2024.07.18