0
我無法找到使用angularjs的$ http.get來傳遞過濾參數的方法。如何使用@MatrixVariable將angularjs的過濾參數傳遞給spring restcontroller
鏈接:
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) {
....
}
當我在瀏覽器中直接使用上述網址,卻是工作的罰款。但是,當我嘗試使用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:'調用者'和'參數'是受限制的函數屬性,無法在此上下文中訪問。在Chrome開發工具中的Function.remoteFunction(:3:14)] –
這看起來像Angularjs放置的URL的問題?和當使用params時。但預計春季控制器的MatrixVariable;和,。矩陣變量不起作用?和&。截至目前,我不知道如何告訴Angularjs通過;並在URL中。如果有人知道,請讓我知道。 –