java - 如何将 long 传递给 spring PUT Controller

标签 java rest spring-mvc post put

我有 Controller :

@RestController
public class AdminController {

    @PutMapping("/path/max_file_size")
    public void setMaxFileSize(@ModelAttribute MaxFileSizeDto size) {
        System.out.println(size.getSize());
    }

    public static class MaxFileSizeDto {
        private long size;

        public long getSize() {
            return size;
        }

        public void setSize(long size) {
            this.size = size;
        }
    }
}

我用 post enter image description here 发送 htpp 请求男人:

但我总是得到 0

size.getSize()

我做错了什么?

最佳答案

在添加模型之前,您应该记住,ModelController 应该分开。这意味着将您的模型保留在另一个包或类中。对于发布/放置数据,您应该使用 Object(String, Integer,Long) 而不是 primitive(int, long etc) .

假设你的模型类

MaxFileSizeDto.java

public static class MaxFileSizeDto {
    private Long size;

    public Long getSize() {
        return size;
    }

    public void setSize(Long size) {
        this.size = size;
    }
}

你的 Controller 类将是:

@RestController
public class AdminController {

    @PutMapping("/path/max_file_size")
    public void setMaxFileSize(@ModelAttribute MaxFileSizeDto size) {
        System.out.println(size.getSize());
    }
}

当您将数据作为 application/x-www-form-urlencoded 发送时,您的数据将以这种格式发送并直接绑定(bind)到 @ModelAttribute 定义的类中。

param1=data1&param2=data2&param3=data3

但是 postman 在内部以这种格式发送数据。 如果您想将数据作为 @RequestBody 发送,那么您应该使用 json 数据,说明您的内容类型是 application/json。为此,您应该从 postman 中选择 raw 单选按钮,然后从下拉列表中选择 application/json(行中的最后一个元素) 在这些情况下,数据将是

{
    "size":123456
}

关于java - 如何将 long 传递给 spring PUT Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47527811/

相关文章:

java - 为什么在jsp上调用session会返回错误?

java - Spring MVC 调度程序 servlet.xml 错误

java - 使用 Google 的 Java API 客户端库进行身份验证时出现 IllegalArgumentException

java - 为什么我找不到 SSL 握手的信任库?

java - 打印给定序列的字符组合

javascript - 保存模型时如何强制执行 POST 请求?

javascript - Salesforce.com REST 身份验证 CORS 问题

spring-mvc - 使用 MockMVC 测试 Spring MVC 请求参数映射和 MultipartFile

类字段和序列化上的 Java 泛型更改

java - 如何对 Webview 中加载的网页进行替换