아직 뷰페이지 완성이 안되어서
임시로 뷰페이지를 만든다음
자바스크립트 제어를 하다보니 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 메시지만 바라보고있는가...
이번 프로젝트로 얻은것이 있다면
스토리보드와 설계 뷰페이지가 먼저라는것이다.
모두의 의견을 맞출수 없었기에 또 직장상사처럼 지시할 수 있는사람이 없었기에
다들 기분상하지않고 배움의 시간으로 사용하기위해
의견조율이 있었지만 돌이켜보면 아쉬운것은 당연한것같다.
이제 뷰페이지만 하면 정말 끝나가는 것 같다.
'ㆍSpring & JSP' 카테고리의 다른 글
[스프링부트]동작예약 / 정해진시간에 run (0) | 2022.01.11 |
---|---|
[스프링/자바] json 컨트롤러 입력(String,int,Date)(부제: 형변환) (0) | 2021.11.22 |
[스프링] java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for 에러해결 (0) | 2021.09.19 |
[스프링/log] 로그 확인- log4j.xml (0) | 2021.09.15 |
[jsp] 회원가입- id 유효성/중복 검사-db연동-ajax (0) | 2021.09.12 |