将许多参数传递给控制器的好方法是什么?
What is a good way to pass many parameters to controller?
我在 Java(Spring 框架)和 Javascript(AngularJs 框架)上有一个应用程序。 table 中有对象列表和两个用于过滤此对象的文本字段。过滤发生在服务器端,所以我将这些值从文本字段作为参数传递给@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个怎么办?有什么好的方法吗,我应该将它们作为地图或类似的东西传递吗?
您可以像这样使用此注释 @ModelAttribute
:
@GetMapping("/messages")
@ResponseBody
public List<Message> getMessagesWithFilters(@ModelAttribute Filter filter) {
List<Message> messages = messageRepository.findBySenderNumberAndRecipientNumber(filter.sender, filter.recipient);
return messages;
}
和Filter.java
public class Filter {
public String sender;
public String recipient;
}
然后您可以在控制器中使用 filter.sender
和 filter.recipient
我在 Java(Spring 框架)和 Javascript(AngularJs 框架)上有一个应用程序。 table 中有对象列表和两个用于过滤此对象的文本字段。过滤发生在服务器端,所以我将这些值从文本字段作为参数传递给@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个怎么办?有什么好的方法吗,我应该将它们作为地图或类似的东西传递吗?
您可以像这样使用此注释 @ModelAttribute
:
@GetMapping("/messages")
@ResponseBody
public List<Message> getMessagesWithFilters(@ModelAttribute Filter filter) {
List<Message> messages = messageRepository.findBySenderNumberAndRecipientNumber(filter.sender, filter.recipient);
return messages;
}
和Filter.java
public class Filter {
public String sender;
public String recipient;
}
然后您可以在控制器中使用 filter.sender
和 filter.recipient