728x90
반응형
SMALL
안녕하세요.
https://blog.naver.com/sysysy0302 여니입니다 :)
< Controller >
< 에러 해결 전 >
// 검색 기능
@GetMapping("/searchList.se")
public String selectList(@RequestParam(name = "keyword") String keyword, Model model, HttpSession Session, String feedHashtag) {
Member m = (Member) Session.getAttribute("loginUser");
List<Member> rf = mService.recommandFollowList(m.getUserNo());
log.info("rf={}", rf);
model.addAttribute("rf", rf);
log.info("keyword = {}", keyword);
List<Search> MyHistory = cService.MyHistory(m.getUserNo());
int result = 0;
if (MyHistory != null) {
if (!MyHistory.get(0).getSearchKeyword().equals(keyword)) {
Search search = new Search();
search.setSearchWriter(m.getUserNo());
search.setSearchKeyword(keyword);
result = cService.insertSearch(search);
log.info("result={}", result);
}
}
Images i = (Images) Session.getAttribute("fileNo");
List<Images> slist2 = cService.selectList2(i.getFileNo());
int result2 = 0;
if (slist2 != null) {
if (!slist2.get(0).getFeedHashtag().equals(keyword)) {
Images images = new Images();
images.setFileNo(i.getFileNo());
images.setFeedHashtag(keyword);
result2 = cService.selectListImg(images);
log.info("result2={}", result2);
}
}
log.info("slist2 = {} ", slist2);
model.addAttribute("keyword",keyword);
model.addAttribute("slist2", slist2);
return "forward:/common/search.jsp";
}
저는 해당 서버측에서 옵션을 선택하여 검색을 하면 그 검색한 해당 피드들을 띄우려던건데, 키워드와 주소창에 내용은 잘 나오는데 sts콘솔창에 slist2도 result2도 안찍혀 나오고, java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 에러가 뜨더라구요.
< 에러 해결 후 >
// 검색 기능
@GetMapping("/searchList.se")
public String selectList(@RequestParam(name = "keyword") String keyword, Model model, HttpSession Session, String feedHashtag) {
Member m = (Member) Session.getAttribute("loginUser");
List<Member> rf = mService.recommandFollowList(m.getUserNo());
log.info("rf={}", rf);
model.addAttribute("rf", rf);
log.info("keyword = {}", keyword);
List<Search> MyHistory = cService.MyHistory(m.getUserNo());
log.info("MyHistory = {}", MyHistory);
int result = 0;
if (!MyHistory.isEmpty()) {
if (!MyHistory.get(0).getSearchKeyword().equals(keyword)) {
Search search = new Search();
search.setSearchWriter(m.getUserNo());
search.setSearchKeyword(keyword);
result = cService.insertSearch(search);
log.info("result={}", result);
}
}
List<Images> slist2 = cService.selectList2(keyword);
log.info("slist2 = {}", slist2);
int result2 = 0;
if (slist2 != null) {
if (!slist2.get(0).getFeedHashtag().equals(keyword)) {
Search search = new Search();
search.setSearchWriter(m.getUserNo());
search.setSearchKeyword(keyword);
result2 = cService.insertSearch2(search);
log.info("result2={}", result2);
}
}
log.info("slist2 = {} ", slist2);
model.addAttribute("keyword",keyword);
model.addAttribute("slist2", slist2);
return "forward:/common/search.jsp";
}
session에 담아 불러올 수 없고 필요없는 fileNo : 필요없는 부분의 코드 삭제 후 수정하고 나니 위의 에러가 사라졌습니다. (해당 오류 내용이 없어지고 다른 에러 내용이 뜨긴 하였지만, 이 기능구현 과정을 오류를 겪는 포스팅을 따로 올릴 예정입니다.)
이럴때는 index값을 읽을 수 없다는 것으로 값이 없는데 자꾸 get으로 가져오려해서 생기는 에러입니다.
이때는 ArrayList에서 get(0) 이렇게 가져온게 없는지 확인해야합니다. ArrayList 초기화 후 넣은 값이 없는데 0을 찾으면 없기 때문에 당연한 에러였습니다.
< JSP >
<!-- 검색아래 피드파트-->
<div class="feed-content-wrap">
<div class="feed-content-wrap1">
<c:if test="${keyword == null}">
<c:forEach var="s" items="${slist}" begin="0" end="${slist.size()}" step="1" >
<div class="feed-content2" data-bs-toggle="modal" data-bs-target="#MyDetailFeed" onclick="feedNo(event , ${s.fileFno})">
<div>
<img src="${contextPath}/${s.filePath}/${s.changeName}">
<div class="like">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-heart-fill"
viewBox="0 0 16 16"
>
<path
fill-rule="evenodd"
d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z"
/>
</svg>
<span class="bi">${s.likeCount}</span>
</div>
</div>
</div>
</c:forEach>
</c:if>
<c:if test="${keyword != null}">
<c:forEach var="s" items="${slist2}" begin="0" end="${slist2.size()}" step="1" >
<div class="feed-content2" data-bs-toggle="modal" data-bs-target="#MyDetailFeed" onclick="feedNo(event , ${s.fileFno})">
<div>
<img src="${contextPath}/${s.filePath}/${s.changeName}">
<div class="like">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-heart-fill"
viewBox="0 0 16 16"
>
<path
fill-rule="evenodd"
d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z"
/>
</svg>
<span class="bi">${s.likeCount}</span>
</div>
</div>
</div>
</c:forEach>
</c:if>
</div>
</div>
728x90
반응형
LIST