ejyoo's 개발 노트

EL표기법과 Java List index 접근하여 출력(결과: 불가능함) 본문

BackEnd/JAVA Spring

EL표기법과 Java List index 접근하여 출력(결과: 불가능함)

ejyoovV 2021. 5. 13. 18:27

결과

결과만 말하면

EL표기법과 Java의 List index 를 섞어서 사용할 수 없다.

 

코드

EL 표기법을 사용한 JAVA List 출력 코드는 아래와 같다.

<%
for(int i = 0 ; i < memberList.size(); i++){

%>
<tr>
<td>${memberList[i].id }</td>
<td>${memberList[i].pwd }</td>
<td>${memberList[i].email }</td>
<td>${memberList[i].phone }</td>
</tr>
<%
}
%>

결과

EL 표현법

보통 memberVO라는 것을 출력할 때,

memberVO를 가져오기 위해서 memberVO 객체 변수인 memberVo 에 getter를 하여 데이터를 불러온다.

memberVo.getId()

 

이 것을 EL 표기법으로 변경하면 아래와 같다.

memberVo.id

왜 이렇게 되는것인가?

EL 표현법은 get을 생략할 수 있기 때문이다.

 

EL 과 List

EL 을 List 에 적용하면 아래와 같게 생각할 수 있다.

memberList[0].id

memberList[0] 번째에서 getId getter를 추출하는데, 결과는 빈값을 가져온다.

왜 비어있는게 출력이 됐을까?

'memberList[0].id' 라는 문법 자체가 잘못되었기 때문에 결과값이 null이 된다.

EL은 값이 null 일 때, 아무것도 출력하지 않는다.

그래서 위의 결과가 나온 것이다.

 

왜 문법이 잘못되었다고 하는 것인가?

그것의 이유는 JSP를 .java가 되는 파일을 열어봐야 한다.

D:\A_TeachingMaterial\6.JspSpring\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\JSP_02_EL\org\apache\jsp

JSP workspace에서 위의 경로를 활용하여 들어가면 내가 생성한 JSP 의 프로젝트 명이 나온다.

그 안의 JSP 파일을 열어보자.

이 자바파일은 실제 실행하는 코드인데 변환된 코드에는 memberList[i].id 에서 i 에 대한것을 어떻게 읽을지에 대한 기준이 없다.

원래는 getter 를통해서 가져와야하는데 getter를 찾지 못했다.

따라서 이 문법은 맞지 않는 것이 된다.


그러면 어떻게 EL 표기법을 사용해서 List 내에 있는 것을 접근해야 하나?

집합체 for문 (향상된 for문) 을 사용하여 memverVO를 추출한 뒤.

getId를 접근할 수 있도록 EL 표기법을 만들어 주어야 한다.

집합체 for문은 nullPointerException이 발생할 수 있기 때문에 Exception에 대한 회피 처리를 해야 한다.

코드는 아래와 같다.

<%
if(memberList != null) for(MemberVO member : memberList){
pageContext.setAttribute("member",member);

%>
<tr>
<td>${member.id }</td>
<td>${member.pwd }</td>
<td>${member.email }</td>
<td>${member.phone }</td>
</tr>
<%
}
%>

이런식으로 하면 정상적으로 출력이 된다.

왜 naver가 naber...?