Programming > JSP/HTML/JSTL

JSTL int to String

JSTL 문자열과 숫자형 변환

Controller와 JSP간 객체를 전달하는 과정에서 발생하는 에러중에 아래와 같은 겨우

7월 21, 2018 10:59:18 오후 org.apache.catalina.core.ApplicationDispatcher invoke
심각: Servlet.service() for servlet [jsp] threw exception
javax.el.ELException: Cannot convert [FIRST] of type [class java.lang.String] to [class java.math.BigDecimal]
        at org.apache.el.lang.ELSupport.coerceToNumber(ELSupport.java:432)
        at org.apache.el.lang.ELSupport.coerceToNumber(ELSupport.java:379)
        at org.apache.el.lang.ELSupport.equals(ELSupport.java:161)
        at org.apache.el.parser.AstNotEqual.getValue(AstNotEqual.java:39)
        at org.apache.el.parser.AstAnd.getValue(AstAnd.java:37)
        at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:190)
        at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:702)

DB에서 취득한 결과중 DB컬럼타입은 varchar 이지만 컬럼내용이 숫자일 경우, 예로 메뉴ID로 1003 등을 사용한 경우로 그값이 그대로 JSP에 전달되어 JSTL을 사용해 Looping....  해서 잘못쓰면 위와 같은 에러가 발생한다.

숫자형 데이터를 문자렬로 설정

<c:forEach var="obj" items="${list}">
        <c:set var="myVal">${obj.menuId}</c:set>
</c:forEach>

숫자형 데이터를 숫자로 설정

<c:forEach var="obj" items="${list}">
        <c:set var="myVal" value="${obj.menuId}" />
</c:forEach