복붙노트

[SPRING] Spring 프로젝트에서 Ajax를 사용하여 c : forEach를 어떻게 업데이트합니까?

SPRING

Spring 프로젝트에서 Ajax를 사용하여 c : forEach를 어떻게 업데이트합니까?

다음은 AJAX 코드로 드롭 다운에서 값을 선택하고 컨트롤러에서 List를 다시 얻습니다. 목록을 다시 가져올 때 AJAX 결과를 사용하여 c : forEach 항목을 업데이트하려고합니다.

AJAX

<script>

    $(document).ready(function() {
        $("#byCollege").change(function() {

            // Get and convert the data for sending
            // Example: This variable contains the selected option-text
            var collName = $('#byCollege').val();
            var studentName = '${salary}';
            var json = {"name" : studentName, "collName" : collName};

            // Send the data as an ajax POST request
            $.ajax({
                url: "http://localhost:8080/AnnaUnivResults/mvc/byCollege",
                type: 'POST',
                dataType: 'json',
                data:  JSON.stringify(json),
                contentType:  "application/json",
                mimeType: 'application/json',
                success: function(response) {
                    alert(JSON.stringify(response));
                    $("#studList").html(JSON.stringify(response));
                },
                error: function(data, status, er) {
                    alert("error: " + data + " status: " + status + " er:" + er);
                }
            });
        });
    });

    $(document).ready(function() {    
        alert(document.getElementById('studentName').val());
    }); 

    var current = document.getElementById('studentName').value();
    currnet.value = <c:out value="${salary}"/>
</script>

제어 장치

@ResponseBody @RequestMapping(value = "/byCollege", method = RequestMethod.POST,  produces = MediaType.APPLICATION_JSON_VALUE)  
    public List<OneStudentResult>   filterByColl(@RequestBody OneStudentResult oneStudentResult, ModelMap model){
        ModelAndView modelAndView = new ModelAndView();
        String deptName = null;
        nameList = resultService.getStudentByColl(oneStudentResult.getName(), oneStudentResult.getCollName());

        Iterator<OneStudentResult> itr = nameList.iterator();

        Set<String> uniqueDeptList = new TreeSet<String>();
        while(itr.hasNext()){
            System.out.println(itr.next().getName());
        }   

        uniqueDeptList.add(" Select a Department ");
        model.addAttribute("uniqueDeptList", uniqueDeptList);

        model.addAttribute("nameList", nameList);
        modelAndView.addObject("nameList", nameList);
        return nameList;
    }
    Set<String> uniqueDeptList = new TreeSet<String>();
    while(itr.hasNext()){

         deptName = itr.next().getDeptName();
         if(!uniqueDeptList.contains(deptName)){
            uniqueDeptList.add(deptName);
         }

    }   

    uniqueDeptList.add(" Select a Department ");
    model.addAttribute("uniqueDeptList", uniqueDeptList);

    model.addAttribute("nameList", nameList);
    return "nameResult";
}

사실 AJAX 호출의 목적은 AJAX를 사용하여 jsp의 jstl을 업데이트하는 것입니다.

추신 : 이제는 내 오래된 테이블이 사라지는 것을 볼 수 있었고 다음과 같이이 나의 목록을 보았습니다.

[{"regNo":"1234","name":"ABCD","collName":" COLLEGE OF ENGINEERING","deptName":"B.E. Electronics and Communication Engineering","results":null,"subjCode":null,"subjName":null,"grade":null,"result":null}]

해결법

  1. ==============================

    1.응답으로 붙여 넣기가 쉬우 며 두 가지 변경 사항이 필요하다고 생각합니다. 하나는 응답에서 @ResponseBody를 제거합니다.

    응답으로 붙여 넣기가 쉬우 며 두 가지 변경 사항이 필요하다고 생각합니다. 하나는 응답에서 @ResponseBody를 제거합니다.

    컨트롤러 메소드를 다음과 같이 변경하십시오.

     public ModelAndView filterByColl(@RequestBody Mapping oneStudentResult, ModelMap model){
            ModelAndView modelAndView = new ModelAndView("nameResult");
       ...
            return modelAndView;
        }
    

    응답이 더 이상 json이 아니기 때문에 적절한 유형을 아약스 요청에 설정하십시오. 데이터와 관련된 가능성이 높기 때문에 파싱 문제에 직면하게 될 것이라고 생각하지만 이는보기로 리디렉션하는 방법입니다.

  2. ==============================

    2.내가 볼 수있는 한 가지 문제가 있습니다. 컨트롤러에서 보내지는 목록의 이름으로 uniqueDeptList를 사용하고 있습니다. var = "uniqueDeptList"에 같은 이름을 사용하고 있습니다. var = "uniqueDeptListCurrentItem"과 같은 다른 식별자

    내가 볼 수있는 한 가지 문제가 있습니다. 컨트롤러에서 보내지는 목록의 이름으로 uniqueDeptList를 사용하고 있습니다. var = "uniqueDeptList"에 같은 이름을 사용하고 있습니다. var = "uniqueDeptListCurrentItem"과 같은 다른 식별자

    <select id="byDept" name="byDept" >
        <c:forEach items="${uniqueDeptList}" var="uniqueDeptListCurrentItem">
            <option value="${uniqueDeptListCurrentItem}">
                ${uniqueDeptListCurrentItem}</option >
        </c:forEach >
    </select >
    
  3. from https://stackoverflow.com/questions/26447194/how-do-i-update-a-cforeach-using-ajax-in-spring-project by cc-by-sa and MIT license