Я не могу найти способ использования $ http.get angularjs для передачи параметров фильтра.Как передать параметры фильтра от angularjs до spring restcontroller с помощью @MatrixVariable
Ссылка:
http://localhost:8080/template/users/query;username=abcd;firstName=ding...
RestController является:
@RequestMapping(value={"https://stackoverflow.com/users/{query}"}, method=RequestMethod.GET)
public ResponseEntity<List<User>> queryUsers(@MatrixVariable(pathVar="query") Map<String, List<String>> filters) {
....
}
Когда я использую выше Url непосредственно в браузере он работает нормально. Однако, когда я пытаюсь вызвать то же самое с помощью http.get файла Angularjs, он не работает.
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: «вызывающий» и «аргумент» являются ограниченными функциями функции и в этом контексте недоступны. в функции Function.remoteFunction (: 3: 14)] в инструментах Chrome dev –
Это похоже на проблему с URL-адресом, где размещается Angularjs? и & when params. Но с весенним контроллером MatrixVariable он ожидает; а также ,. С матричной переменной не работает? а также &. На данный момент я не уверен, как рассказать Ангулярцам; и в URL. Если кто-нибудь знает, пожалуйста, дайте мне знать. –