원숭이
296
2018-08-10 17:38:48
8
156

배열 DTO Controller 에서 받기



StudentDTO 클래스가 있슴니다



class StudentDTO {
    int age;
    String name;
    String major;
    String email;
}


모두 getter, setter 로 되어 있고


script 에서 

ajax form 데이터에

var formData = "";
formData += "student[0].name="가";
formData += "student[0].age=10;
formData += "student[0].email='abc';
formData += "student[1].name="가";
formData += "student[1].age=10;
formData += "student[1].email='abc';
formData += "student[2].name="가";
formData += "student[2].age=10;
formData += "student[2].email='abc';
formData += "student[3].name="가";
formData += "student[3].age=10;
formData += "student[3].email='abc';


ajax 통신을 해서 

controller 단에서

	@RequestMapping(value = "/Regist")
	public void regist(@RequestBody List<StudentDTO> student) {
		System.out.println("student : " + student);
		return null;
	}


이런식으로해서 배열로 출력하고 싶은데

안되네요..


requestParam방식도 해보고 했는데요 도와주세요 ~~

0
0
  • 답변 8

  • bluerain
    2k
    2018-08-10 17:45:47
    System.out.println("student : " + student);

    에서 뭐라고 찍히나요?

    object라 원하는 문자열로는 안보일텐데요.


    0
  • 원숭이
    296
    2018-08-10 17:52:54

    우선 찍히지 않고

    student 가 알수가없다고 나오네요ㅠ에러

    0
  • bluerain
    2k
    2018-08-10 17:55:41

    UI에서 보내실때, form의 method를 post로 보내셨나요?

    1
  • autopoc
    724
    2018-08-10 18:00:08

    넘기는 부분을 보여주세요.

    ajax로 넘기면 @ResponseBody를 쓰셔야 할껀데요...

    1
  • 원숭이
    296
    2018-08-10 18:10:43

    스크립트에서는 이렇게 보내주고 잇으며

    $.ajax({
                type : 'POST',
    	    contentType : 'application/json',
    	    url : '/regist',
    	    data : data,
    	    dataType : dataType,
    	    success : function(data,status){
    
    	 };
    	});


    개발자 도구 formData를 보면

    student[0].name="가",
    student[0].age=10
    student[0].email='abc'
    student[1].name="가"
    student[1].age=10,
    student[1].email='abc'
    student[2].name="가"
    student[2].age=10
    student[2].email='abc'
    student[3].name="가"
    student[3].age=10
    student[3].email='abc'
    데이터 잘 가고 있습니다 컨트롤러도 경로 안맞는거 아닙니다 ~ ㅠ,.ㅠ
    0
  • 원숭이
    296
    2018-08-10 18:11:23

    @bluerain 네 등록해야해서 POST로 했습니다

    0
  • @RequestMapping(value = "/Regist", method=RequestMethod.POST)

    method=RequestMethod.POST 추가 해보세요.


    ajax 에서 data는 {"키" : 값} 형태로 추가해 주세요.


    $.ajax({
                type : "POST",
    	    url : "/regist",
    	    data : {
    	   	     "data": formdata
    	    },
    	    success : function(){
    
    	 };
    });


    JQuery.ajax api에 나온 내용

    data
    Type: PlainObject or String or Array
    Data to be sent to the server. It is converted to a query string, if not already a string. It's appended to the url for GET-requests. See processData option to prevent this automatic processing. Object must be Key/Value pairs. If value is an Array, jQuery serializes multiple values with same key based on the value of the traditional setting (described below).

    @RequestMapping(value = "/Regist")
    	public void regist(@RequestParam Map<String, Object> map) {
    		List<StudentDTO> student = new ArrayList<StudentDTO>();
                    student = map.get("data");
    
    		for(int i =0; i < student.size(); i++){
    		      System.out.println("student" + i);
    		      System.out.println(student.get(i).getName());
    		      System.out.println(student.get(i).getMajor());
    		      System.out.println(student.get(i).getEmail());
    		}
    		return null;
    	}

    이렇게 해보시면 되지 않을까요.

    0
  • bluerain
    2k
    2018-08-16 11:09:33

    form data를 json 형태로 보내시려면
    $("#폼아이디").serialize() 로 하여 data에 대입해 보세요.

    예전에 일반 form 전송할때, 리스트 형태도 저렇게 해서 보냈던걸로 기억합니다.


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