반응형
250x250
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

Yeonee's Story

[Error] java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 오류 해결 본문

⋆ 。゜☁︎ 。⋆ 。゜☾゜。⋆⋆ 。゜☁︎ 。⋆ 。゜☾゜。⋆/Error

[Error] java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 오류 해결

yeonee 여니 2023. 9. 17. 22:45
728x90
반응형
SMALL

안녕하세요.
https://blog.naver.com/sysysy0302 여니입니다 :)

 

yeonee 블로그 : 네이버 블로그

예쁘고 맛있게 먹고 건강하게,강인하지만 온화하게 행하라. ※맛스타운스타일상 인스타 www.instagram.com/s2._.y25n ※맛집감성일상 유튜브https://youtube.com/channel/@S2_yeonee 티스토리https://yeoneeluv.tistory.co

blog.naver.com

 

 

< 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