gpt4 book ai didi

java - 无法将类型 'java.lang.String' 的值转换为所需的模型对象类型

转载 作者:行者123 更新时间:2023-11-30 10:11:28 27 4
gpt4 key购买 nike

我正在尝试通过以 JSON 格式提供所需的请求来使用 postman 访问服务:

 {
"baseParam": {
"userId": "u1234"
},
"resource": {
"name": "resource"
}
}

连同一个多部分文件,如下面的 postman 屏幕所示

Postman screen

但是我得到了错误:

'无法将“java.lang.String”类型的值转换为所需类型“SampleRequestObject”;嵌套异常是 java.lang.IllegalStateException:无法将类型 [java.lang.String] 的值转换为所需类型'

Controller

   @RequestMapping(method = RequestMethod.POST, value = "/sample/resource", 
produces = "application/json")
@ResponseBody
public final ResponseObject sampleResource(@RequestParam("request") final
SampleRequestObject requestObject,@RequestParam("file") final
MultipartFile file,BindingResult result ) throws IOException {

String success = “SUCCESS”;
requestObject.setFile(file);
String id=sampleService.sampleResourceService(resourceObject);
//sampleService Object has been autowired earlier in controller
return success;


}
}

SampleRequestObject – 模型类

    public class SampleRequestObject extends SampleMainObject {

@NotNull
@IsValid(baseParam = { "userId"})
private BaseParam baseParam;

@NotNull
private SampleResource resource; // ANOTHER OBJECT OF SAMPLE RESOURCE
CLASS
private MultipartFile file;

public SampleResource getResource() {
return resource;
}

public void setResource(SampleResource resource) {
this.resource = resource;
}

@Override

public Param getBaseParam() {

return baseParam;
}

public final void setBaseParam(final BaseParam baseParam) {
this.baseParam = baseParam;
}

public MultipartFile getFile() {
return file;
}

public void setFile(MultipartFile file) {
this.file = file;
}
}

SampleServiceImpl.class 中的函数(SampleService 实现)

    @Override
@Transactional
public final String sampleResourceService( SampleRequestObject
requestObject) {throws IOException
String Id=null;

try
{

MainResourceObject resourceObject = new MainResourceObject();
resourceObject.setActualName(requestObject.getFile()
.getOriginalFilename());
resourceObject.setName(requestObject.getResource().getName()); );
.
.
.
.
.
.
.
.

.
}
catch (Exception e) {
log.error("Service Execution failed",e);
}
}

我还尝试提供 @ModelAttribute 而不是 @RequestParam。然后,可以进入 Controller 和服务,但是 requestObject(在 Controller 中)的所有值都被填充为空值。因此,它从服务实现中抛出 NullPointeException。

请提供解决方案。

最佳答案

你能试试这个吗

public final ResponseObject sampleResource(SampleRequestObject request,
@RequestParam("file") final MultipartFile file,
BindingResult result ) throws IOException {
...

我刚刚删除了 @RequestParam 并将变量更改为 request

关于java - 无法将类型 'java.lang.String' 的值转换为所需的模型对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52423604/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com