java - Spring RestTemplate 不存在必需的字符串参数

标签 java spring rest spring-mvc resttemplate

我在使用 RestTemplate 发布 2 个参数时遇到问题:

  • 一个字符串
  • 一个多部分文件

我认为我的 Controller 没有问题,因为它非常基础。似乎 Controller 没有收到 name 参数。你能告诉我我的代码有什么问题吗

Controller (接收器)

@RequestMapping(value="/fileupload", method=RequestMethod.POST)
public void handleFileUpload(@RequestParam("name") String fileUploadHandlerName,
                             @RequestParam("file") MultipartFile file)
{
    [...]
}

The Rest client(发件人)

RestTemplate rest = new RestTemplate();
URI uri = new URI("http://127.0.0.1:7011/xxxxxxxx/admin/fileupload");

MultiValueMap<String, Object> parts = new LinkedMultiValueMap<String, Object>();
parts.add("name", "import_keys");
Resource file = new ClassPathResource("xmlFileImport/file.xml");
parts.add("file", file);

rest.postForLocation(uri, parts);

Controller 堆栈跟踪

org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'name' is not present

最佳答案

处理多部分请求是一个复杂的过程。不是读取请求参数那么简单。因此,Spring 要求您声明一个 MultipartResolver。以便它可以解析和处理此类请求。您可以在 applicationContext.xml 文件中执行此操作:

<bean id="multipartResolver"  
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
    <property name="maxUploadSize">  
        <value> <YOUR_SIZE> </value>  
    </property>  
    <property name="maxInMemorySize">  
        <value> <YOUR_SIZE> </value>  
    </property>      
</bean>

在哪里CommonsMultipartResolver是解析您的请求并拆分各个部分的实现,以便您的 Controller 可以找到普通请求参数和上传的文件。

关于java - Spring RestTemplate 不存在必需的字符串参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16238790/

相关文章:

java - 在 spring mvc 中的应用程序上下文中设置对象

java - 如何将字符串转换为对象并使用 Jackson 检索值

java - 如何按顺序迭代PriorityBlockingQueue

spring - 如何在Spring Boot + Cloud中禁用refreshScope运行状况指示器?

java - 被事务 : @console:Oracle (INTELLIJ CLIENT) 锁定

spring - 当与 Apache Kafka Server 的连接丢失时,如何使用 Spring Kafka Listener 停止微服务?

ruby-on-rails - 创建删除事件记录的按钮时出错

javascript - 使用 transportCredentialOnly 安全性对 RESTful WCF 服务的跨域 Ajax JSON POST 支持

java - Android sqlite rawquery selection args问题

java - 尽管满足条件,但方法从未到达 if 语句