猿问

将许多参数传递给控制器​​的好方法是什么?

我有一个关于 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 个过滤器,我该怎么办?有没有好的方法可以做到这一点,我应该将它们作为地图或类似的东西传递吗?


守候你守候我
浏览 102回答 1
1回答

湖上湖

您可以@ModelAttribute像这样使用此注释:@GetMapping("/messages")@ResponseBodypublic List<Message> getMessagesWithFilters(@ModelAttribute Filter filter) {&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; List<Message> messages = messageRepository.findBySenderNumberAndRecipientNumber(filter.sender, filter.recipient);&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; return messages;}和过滤器.javapublic class Filter {&nbsp; &nbsp; public String sender;&nbsp; &nbsp; public String recipient;}然后你可以在你的控制器中使用filter.senderandfilter.recipient
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答