I have an application on Java (Spring framework) and Javascript (AngularJs framework). There are list of objects in the table and two text fields for filtering this objects. Filtering happens on the server side so I pass these values from text fields to @RestController's method as params and then to the repository method. Client side:
$http({
method: 'GET',
url: '/messages',
params: {sender: $scope.sender, recipient: $scope.recipient}
}).then(
function (res) {
$scope.messages = res.data;
},
function (res) {
console.log("Error: " + res.status + " : " + res.data);
}
);
Server side:
@GetMapping("/messages")
@ResponseBody
public List<Message> getMessagesWithFilters(@RequestParam(required = true) String sender,
@RequestParam(required = true) String recipient) {
List<Message> messages = messageRepository.findBySenderNumberAndRecipientNumber(sender, recipient);
return messages;
}
It's pretty easy when there're only two filters but what should I do if there are 10 or 20 of them? Is there a good way to do this, should I pass them as Map or something like that?