繁体   English   中英

将许多参数传递给 controller 有什么好方法?

[英]What is a good way to pass many parameters to controller?

我在 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 个过滤器,我该怎么办? 有没有好的方法,我应该将它们传递为 Map 还是类似的东西?

您可以像这样使用此注解@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;
}

然后,您可以在 controller 中使用filter.senderfilter.recipient

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM