JSTL 제약사항 - 상수

간단하지만 편리한 기능때문에 JSP에서 JSTL 사용을 적극 권장하고 있다.
그러나 JSTL은 Java Bean에만 접근이 가능하고, 인자없는 getter만 사용가능하다.
상수를 참조할수도 없다.
public class User{
    private String name;
    private String userType;
    private String birthDay;
   
    //setter and getter
}

<c:if test="${S_USER.userType == 'admin'}">관리자</c:if>
Constants.TYPE_ADMIN 이라는 상수가 있는데 참조할 수가 없다.
그래서 하드코딩을 해야 한다.

- 그래서 isAdmin()을 추가한다.
public boolean isAdmin(){
	return userType.equals(Constants.TYPE_ADMIN);
}

<c:if test="${S_USER.admin}">관리자</c:if>
- JSTL 구문에서 상수를 직접 사용할수 있도록 하자.
<%
    Map constants = new HashMap();
    constants.put("TYPE_ADMIN", Constants.TYPE_ADMIN);
    constants.put("TYPE_EMP", Constants.TYPE_EMP);
   
    application.setAttribute(Constants.class.getSimpleName(), constants);
%>

<c:if test="${applicationScope.Constans.TYPE_ADMIN == sessionScope.S_USER.userType}">관리자</c:if>   
<c:if test="${Constans.TYPE_EMP == S_USER.userType}">직원</c:if>

- 설계시점에 고려를 해서 뷰레이어가 단순해지도록 해야 한다.
뷰레이어에 Java코드를 사용하거나 상수를 사용하지 않는 것이 좋다.