닉추
1k
2022-06-25 12:45:17 작성 2022-06-25 12:50:31 수정됨
2
114

ajax로 배열값 컨트롤러 넘기기 오류


삭제버튼 클릭시 체크박스 체크된 사람 관리자 권한 삭제 구현 하려는데

Required request parameter 'user_Id[]' for method parameter type List is not present] 오류가 뜨는데 원인이 뭘까요


1. view단.

<tr th:each="user : ${user}">
<td><input th:type="checkbox" th:name="checkedUser" th:value="${user.user_Id}"></td>
<td><th:block th:text="${user.user_Id}"/></td>
<td><th:block th:text="${user.user_Name}"/></td>
</tr>
</table>
</main>
</div>
</div>


</body>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
//
삭제버튼 클릭시 실행
$('#delete-btn').click(function(){
var checkArr = new Array();
    //체크된 내용 가져와서 checkArr어레이에 담는다.
$("input[type=checkbox][name=checkedUser]:checked").each(function(){
checkArr = $(this).val();

});
    //objParams에 위에서 만든 checkArr를 담아서 ajax로 보낸다
var objParams = {
"user_Id" : checkArr
}

$.ajax({
url : '/manage/deleteAdminAuth',
type : 'post',
dataType : 'json',
contentType : "application/x-www-form-urlencoded; charset=UTF-8",
data : objParams,
success : function(result){
if(result == 1){
window.location.href = "/manage/userAuth";
} else {
alert("
삭제 실패");
}
}
});
});

</script>


2. 컨트롤러

@ResponseBody
@RequestMapping("/deleteAdminAuth")
public void deleteAdminAuth(@RequestParam("user_Id[]") List<String> user_Id) throws Exception{

for(String user : user_Id) {
System.out.println(user);
manageService.deleteAdminAuth(user_Id);
}
}


3. 서비스

String deleteAdminAuth(List<String> user_Id) throws Exception;

4. 서비스impl

@Override
public String deleteAdminAuth(List<String> user_Id) throws Exception {
return manageMapper.deleteAdminAuth(user_Id);
}

5. 매퍼

String deleteAdminAuth(List<String> user_Id) throws Exception;

6. 매퍼.xml

<update id="deleteAdminAuth" parameterType="java.util.List" >
<![CDATA[
UPDATE T_USER SET USER_AUTH='ROLE_USER'
WHERE USER_ID IN (
<foreach collection="array" item="user_Id" index="index" separator=",">
'#{user_Id}'
</foreach>
)
]]>
</update>
0
  • 답변 2

  • 한국은역시자바
    1k
    2022-06-25 12:47:15

    checkArr.push($(this).val());


    $.ajax({

      contentType : "application/json"

      data : JSON.stringify(checkArr)

    });


    @RequestBody List<String> userIds

  • 닉추
    1k
    2022-06-25 13:43:02

    여러군데 문제가 있었네요 해결되었습니다 감사합니다 ~

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