2013-01-14 2 views
6

내가 서버 측에서 같은Spring에서는 정수 목록을 RequestParam에 어떻게 바인딩합니까?</p> <pre><code>@RequestMapping("/delete.x") public @ResponseBody Map<String, Object> delete(HttpServletRequest request, @RequestParam("ids[]") List<Integer> ids) { </code></pre> <p>하는 나는 반복하려고 :

ids[] = 11 
ids[] = 12 
ids[] = 21 

를 전송되고 클라이언트에서 매개 변수를 가지고, 나는 다음과 같은 방법으로 봄 컨트롤러가 ID의 수집은 다음과 같이

for (Integer id : ids) { 

다음과 같이 내가 예외를 얻을 :

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer 

스프링이 ID 유형을 목록으로 변경하고 있습니까 < 문자열 >? 내가 상상해도이 문제를 피하고 목록의 정수를 정수로 저장하도록하려면 어떻게해야합니까?

답변

13

현재 직면하고있는 문제는 Java에 유형 삭제가 있다는 것입니다. 따라서 런타임에 List<Integer>List<String>과 같으며 스프링은 정수를 원하는 목록에 넣을 수있는 방법이 없습니다.

해결 방법은 정수 목록 대신 정수 배열을 사용하는 것일 수 있습니다.

@RequestMapping("/delete.x") 
public @ResponseBody Map<String, Object> delete(HttpServletRequest request, 
    @RequestParam("ids[]") Integer[] ids) { 
1

문자열을 위해이 같은 짓을하고이 제대로

<form action="addArticals"> 
    <input name="artical[]" type="text"> </input> 
    <input name="artical[]" type="text"> </input> 
    <input name="artical[]" type="text"> </input> 
    <input name="artical[]" type="text"> </input> 
    . 
    . 
    . 
    . 
    <input name="artical[]" type="text"> </input> 
</form> 

를 실행하고 컨트롤러에서이

@RequestMapping("/addArticals") 
public String articalStore(@RequestParam("artical[]")List<String> articals, Modal modal) 
{ 
} 
처럼 될 것입니다