우울한컴공학생..
74
2022-05-14 23:41:42
0
67

타임리프 ajax 예제질문이요



static class FindFriendValidator implements Validator {
        @Override
        public boolean supports(Class<?> clazz) {
            return FriendForm.class.isAssignableFrom(clazz);
        }

        @Override
        public void validate(Object target, Errors errors) {
            FriendForm request = FriendForm.class.cast(target);
            if (request.getId().equals("")) {
                errors.rejectValue("id", "NotEmpty.id", "아이디를 입력하세요");
            }
        }
    }
@PostMapping("/add")
    public String addFriend(@Login User user, @RequestBody FriendForm friendForm, BindingResult bindingResult, Model model) {
        FindFriendValidator findFriendValidator = new FindFriendValidator();
        findFriendValidator.validate(friendForm, bindingResult);

        if (bindingResult.hasErrors()) {
            log.info("bindResult : {}", bindingResult);
        } else {
            try {
                friendService.addFriend(user, friendForm.getId());
                log.info("success addFriend");
            } catch (DuplicateFriendException e) {
                log.error("error : ", e);
            } catch (NoSuchUserException e) {
                log.error("error : ", e);
            }
        }

        getFriends(user, model);
        return "friend/friendList :: #friendTable";
    }
<body>
    <div>
        <form id="form" th:object="${user}">
            <div>
                <input type="text" th:field="*{id}" placeholder="회원명"/>
            </div>
            <button type="button" onclick="add()">검색</button>
            <span th:errors="*{id}"></span>
        </form>
    </div>
    <hr>
    <table id="friendTable">
        <thead>
        <tr>
            <th>번호</th>
            <th>친구 이름</th>
        </tr>
        </thead>
        <tbody>
        <tr th:each="friend : ${friends}">
            <td th:text="${friendStat.index + 1}"></td>
            <td th:text="${friend}"></td>
        </tr>
        </tbody>
    </table>

</body>
<script>
    function add(){
        let param = {
            id:$("#id").val()
        };

        $.ajax({
            type:"POST",
            url:"/friend/add",
            data: JSON.stringify(param),
            contentType:"application/json; charset=utf-8",
        }).done(function(fragment){
            $("#friendTable").replaceWith(fragment);
        }).fail(function(request, status, error){
            console.log("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
        });
    }
</script>
</html>

타임리프랑 ajax를 통해서 친구 추가하는 페이지를 만들려고 하는데 만약 아이디를 적지 않고 검색 버튼을 누르게 되면 bindingResult를 통해서 에러문구를 표시할려고 하는데 도저히 더이상 어떻게 해야할지 모르겠어서 질문드려요... 

아무리 찾아봐도 어디를 잡아야 할지 모르겠어요

0
  • 답변 0

  • 로그인을 하시면 답변을 등록할 수 있습니다.