我有一个关于 Java(Spring 框架)和 Javascript(AngularJs 框架)的应用程序。表中有对象列表和两个用于过滤此对象的文本字段。过滤发生在服务器端,所以我将这些值从文本字段作为参数传递给@RestController 的方法,然后传递给存储库方法。客户端: $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); } );服务器端: @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; }当只有两个过滤器时很容易,但是如果有 10 个或 20 个过滤器,我该怎么办?有没有好的方法可以做到这一点,我应该将它们作为地图或类似的东西传递吗?
1 回答

湖上湖
TA贡献2003条经验 获得超2个赞
您可以@ModelAttribute像这样使用此注释:
@GetMapping("/messages")
@ResponseBody
public List<Message> getMessagesWithFilters(@ModelAttribute Filter filter) {
List<Message> messages = messageRepository.findBySenderNumberAndRecipientNumber(filter.sender, filter.recipient);
return messages;
}
和过滤器.java
public class Filter {
public String sender;
public String recipient;
}
然后你可以在你的控制器中使用filter.senderandfilter.recipient
添加回答
举报
0/150
提交
取消