본문 바로가기
ㆍSpring & JSP

[Spring/JSP] EL표현식 연산자, 프로젝트 상황

by 매이슨 2021. 9. 23.

아직 뷰페이지 완성이 안되어서
임시로 뷰페이지를 만든다음
자바스크립트 제어를 하다보니 html 영역에서의
EL표현식 제어를 해야하는데 기존 연산자들('!=','==',등등)과  다른가? 하여 스프링책을 뒤져봤다.

연산자 종류 연산자 설명
산술 연산자 + 덧셈
- 뺄셈
* 곱셈
/ 또는 div 나눗셈
% 또는 mod 나머지
비교 연산자 == 또는 eq 두 값이 같은지 비교
!= 또는 ne 두 값이 다른지 비교
< 또는 lt 두 값이 작은지 큰지 비교
> 또는 gt 두 값이 작은지 큰지 비교
<= 또는 le 두 값이 작거나 같은지, 크거나 같은지 비교
>= 또는 ge 두 값이 작거나 같은지, 크거나 같은지 비교
논리 연산자 && 또는 and 논리곱 연산, AND 연산, 둘다 true 일때만 true
| | 또는 or 논리합 연산, OR 연산, 둘 중 하나라도 true면 true
! 또는 not 부정 연산 true → false, false → true
empty 연산자 empty <값> <값>이 null 이거나 빈문자열이면 true
조건 연산자
(삼항 연산자)
<수식> ? <값1> : <값2> 수식이 true면 <값1>, false면<값2>

뷰페이지에서의 비교 연산자 'eq' 'ne' 사용예제

<c:if test="${productVO.p_amount ne 0}">
	<option value="${productVO.p_num}">${productVO.p_option} 남은재고 : ${productVO.p_amount}</option>
</c:if>
<c:if test="${productVO.p_amount eq 0}">
	<option value="soldOut">${productVO.p_option} -- 품절</option>
</c:if>

'ne' 와 'eq' 가 색구분이 제대로 되지않고 있지만 if문 조건식에 들어있다.

'삼항연산자'는 자바랑 자바스크립트에서 배웠었는데,
EL표현식에서도 보고 이게 근본인가 싶었다.

주 사용처는 위와 비슷하지만

${param.id != null? param.id : "품절"}
${param.id != null? param.id : "값이 존재하지않습니다."}

위 처럼 사용하려다가 전부다 if 문으로 다 바꿨다.
양자택일로만 제어할때는 가장 편한것같다.


'empty''not empty'도 사용 가능하다.
내가 사용한 예제는 

<c:if test="${not empty basketList}">
	<c:forEach var="basketVO" items="${basketList}" varStatus="b">

서버로 부터 받아온 리스트가 empty가 아니면으로 시작하는 if문이었다.


또 서버에서 join으로 가져오려면 새로운 VO가 필요한것을 알게되어
서로 다른 테이블에서 값을 가져와서 장바구니 페이지에 뿌려줄때 사용하는 EL표현식이다.

여기에서 조건은
 - 장바구니 테이블은 u_id(session제어)로 먼저 해당 사용자의 장바구니 리스트를 먼저 받아온다.
 - 해당 리스트에는 p_num(제품번호)가 있고,  p_num(제품번호)는 product 테이블의 pk라서 해당 제품의
   이미지, 재고를 가져와 ①섬네일 출력 ②재고가 조건수량 이하일때는 '품절임박' 또는 '품절' 메시지를 출력한다.
이때 뷰페이지에서 시작을 이렇게 제어한다.

<c:if test="${not empty basketList}">
  <c:forEach var="basketVO" items="${basketList}" varStatus="b">
    <c:forEach var="productVO" items="${productList}" varStatus="p">
      <c:if test="${b.index eq p.index}">

맨 아랫줄  index가 같을때라는 조건을 추가해 제어함으로써 오류를 또 줄일수있다.

요약하자면 join없이 두개테이블을 쓸때이다. 물론 row의 개수가 같아야한다.


git이 아직도 어렵다. 형상관리가 중요하다 생각했는데.. 이제는 형상관리보다는 협엽툴이 그냥 어렵다...
난 왜 nothing to commit 메시지만 바라보고있는가...

이번 프로젝트로 얻은것이 있다면
스토리보드와 설계 뷰페이지가 먼저라는것이다.
모두의 의견을 맞출수 없었기에 또 직장상사처럼 지시할 수 있는사람이 없었기에
다들 기분상하지않고 배움의 시간으로 사용하기위해
의견조율이 있었지만 돌이켜보면 아쉬운것은 당연한것같다.

이제 뷰페이지만 하면 정말 끝나가는 것 같다.