0
angularjs의 $ http.get을 사용하여 필터 매개 변수를 전달하는 방법을 찾을 수 없습니다.@MatrixVariable을 사용하여 angularjs에서 spring restcontroller로 필터 매개 변수를 전달하는 방법
URL은 다음과 같습니다
http://localhost:8080/template/users/query;username=abcd;firstName=ding...
RestController입니다 : 내가 브라우저에서 직접 위의 URL을 사용하는 경우는 잘 작동
@RequestMapping(value={"https://stackoverflow.com/users/{query}"}, method=RequestMethod.GET)
public ResponseEntity<List<User>> queryUsers(@MatrixVariable(pathVar="query") Map<String, List<String>> filters) {
....
}
. 그러나 Angularjs의 $ http.get을 사용하여 같은 것을 호출하려고하면 작동하지 않습니다.
AngularJS와 코드 :
this.searchUser = function() {
var queryStr = '';
for (var key in userObj.search) {
if (userObj.search[key]) {
queryStr += ";" + key + "=" + userObj.search[key];
}
}
console.log('Url ', 'users/query' + queryStr);
if (queryStr === "") {
alert("No filters specified");
return false;
}
$http.get('users/query', angular.toJson(userObj.search)).then(function successCallback(response) {
if (response.data.errorCode) {
console.log(response);
alert(response.data.message);
} else {
console.log('Successfully queried for users ', response.data);
userObj.users = response.data;
}
}, function errorCallback(response) {
console.log('Error ', response);
alert(response.statusText);
});
};
나는이 메서드를 호출 할 때 : 내가 오류
errorCode: 400
message: "Failed to convert value of type [java.lang.String] to required type [long]; nested exception is java.lang.NumberFormatException: For input string: "query""
심지어 내가, 그것은 위의 URL에서 언급 한대로 쿼리 문자열을 전달하려고 노력으로하지만, 여전히 같은 오류. RestController 메서드 안에 들어가는 것도 아닙니다.
해결 방법?
난 당신이 언급 한 바와 같이 코드를 수정,하지만 여전히 같은 문제. –
예외 : TypeError : '호출자'및 '인수'는 제한된 함수 속성이므로이 컨텍스트에서 액세스 할 수 없습니다. at Function.remoteFunction ( : 3 : 14)] Chrome 개발자 도구 –
Angularjs가 사용하는 URL에 문제가있는 것 같습니다. & params가 사용될 때. 그러나 스프링 컨트롤러의 MatrixVariable을 사용하면 예상 할 수 있습니다. 및. 행렬 변수가 작동하지 않습니까? 및 &. 현재로서는 Angularjs에게 전달하는 방법을 알 수 없습니다. 및 URL에. 아무도 모른다면 알려주세요. –