오류 상황
jsp단에서 select 태그를 사용해 직접 검색조건의 값을 세팅했다.
사용자가 선택한 값은 폼에 담겨서 VO형태로 컨트롤러로 넘어간다.
이동 순서 : jsp > 컨트롤러 > 서비스 > 서비스 임플 > xml
컨트롤러에서 확인해보면 받은 값은 String형태였다.
xml파일까지 넘어온 다른 검색조건 값들도 👇아래처럼 String을 받아 사용하고 있었다.
<if test="변수명 == '특정값'">
...
</if>
그런데 받아온 값이 xml의 if 조건으로 걸러지지 않음.
오류 원인 및 해결법
*혼자 내린 결론이므로 틀릴 수 있음
1. jsp단의 다른 검색조건들은 화면 로드 시 돌리는 select문을 통해 컨트롤러에서 받아온 list 안의 변수를 c태그를 이용해 세팅해주고 있었음. => 아래 select에서 선택된 값은 보기에 숫자라도 String임. 따라서 문제 없이 xml 파일에서 String으로 인식함.
<select id="searchItem" name="searchItem">
<c:forEach items="${list }" var="list" varStatus="i">
<option value="${list.value}" label="${list.name}"
<c:if test="${list.value eq searchVO.searchItem}">
selected="selected"
</c:if>
</option>
</c:forEach>
</select>
2. select문에 내가 직접 입력한 숫자 값은 int임. 따라서 xml 파일에서도 int로 인식.
3. xml에서 비교할 때 int로 비교한다.
<if test="변수명 == 특정값">
...
</if>
의문점
컨트롤러에서는 VO에서 가져와 String 변수에 담아봐도 문제가 없었고,
equals()를 사용해 비교해봐도 String이었던 값이 왜 xml에서는 int로 인식될까?
'Java > Spring' 카테고리의 다른 글
[포트킬] 사용중인 port 죽이기 (0) | 2020.09.22 |
---|---|
[Java] argument type mismatch 오류 해결 (0) | 2020.06.24 |
[Ajax 오류] 컨트롤러에서 jsp로 값이 넘어오지 않는 문제 해결 (0) | 2020.05.22 |
[Spring 오류] Failed to parse mapping resource 해결 (0) | 2020.05.22 |
[jstl] 리스트에 값이 없을 때만 특정 태그 보이기 (0) | 2020.05.21 |
댓글