2013-09-05 2 views
0

배열에 여러 요소가 있으면 컨트롤러에 배열이 전달됩니다. 그러나 배열에 요소가 하나만있는 경우 문자열 배열이 아닌 문자열로 컨트롤러에 전달됩니다.하나의 요소가있을 때 문자열 배열이 문자열로 내 컨트롤러에 전달됩니다.

javascript.js

var idArray = []; 
idArray.push('testString'); 

Ext.Ajax.request({ 
    url: '/mark/fetch', 
    params: {array: idArray} 
}); 

markController.groovy

def fetch = { 
    def idArray = params.array 
    idArray.each{ 
    print it 
    } 
} 

그래서 print it 인쇄 TestString에의 각 문자 대신 한 번에 전체 문자열.

idArray가 항상 컨트롤러에 배열로 전달되도록하려면 어떻게해야합니까?

+0

params를 사용하고 있기 때문에 Grails 컨트롤러입니까? 그렇다면 대신'params.list ('array')'를 사용할 수 있습니까? – dmahapatro

+0

@dmahapatro 이것은 정확히 내가 찾고있는 것이고, 답을하고 받아 들일 것입니다, 고마워요! – Grammin

답변

3

params을 사용할 때 Grails 컨트롤러를 언급한다고 가정하면 대신 params.list('array')을 사용해 볼 수 있습니다.

이 성질은 params입니다. here as Type Conversion입니다.

1

두 경우 모두 문자열로 전송됩니다. 문자열을 배열로 캐스팅 한 결과의 쉼표로 구분 된 값 목록을 디코딩하는 프레임 워크입니다 (시도 idArray.toString()). 아마도 요청의 헤더 인 Content-Type을 기반으로합니다.

params 대신 요청의 jsonData 옵션을 사용해 볼 수 있습니다. 프레임 워크가 JSON을 받아들이면 데이터의 타이핑이 더 잘 고려 될 것입니다.

관련 문제