我的 Spring 项目中出现此错误,我需要解决方案

问题描述 投票:0回答:1

我正在使用 Spring Framework,并使用一些依赖项,例如 Spring Jpa、Spring Web。

我尝试使用 MultipartFile 在寄存器中添加照片,但收到错误结果。它返回了 MultipartFile 的问题

我的控制器中有这个:

    @GetMapping("/registrarAdmin")
    public String registrarAdmin(Model model) {
        model.addAttribute("admin", new AdministradorEntity());
        return("registrarAdmin");
    }
    @PostMapping("/registrarAdmin")
    public String registroAdmin(@ModelAttribute("admin")AdministradorEntity adminFormulario,
            Model model, @RequestParam("fotoAdmin") MultipartFile foto) {
        adminService.crearAdmin(adminFormulario, foto);
        return "registrarAdmin";
    }

MultipartFile (foto) 实现的部分是这样的:

public static String guardarImagen(MultipartFile foto){
        try {
            Path pathDire = Paths.get("src/main/resources/static/img/guardados/");
            if (!Files.exists(pathDire)) {
                Files.createDirectories(pathDire);
            }
            
            byte[] fotoBytes= foto.getBytes();
            Path pathImagen = Paths.get("src/main/resources/static/img/guardados/" + 
                    foto.getOriginalFilename());
            
                Files.write(pathImagen, fotoBytes);
                return foto.getOriginalFilename();
                
        } catch (IOException e) {
            // TODO: handle exception
            System.out.println("error al cargar la foto"+e.getMessage());
            return null;
        }
}

这是我的输出:

[2m2024-10-22T09:58:18.785-05:00[0;39m [33m WARN[0;39m [35m15572[0;39m [2m---[0;39m [2m[Proyecto_LP2] [nio-8080-exec-3][0;39m [2m[0;39m[36m.w.s.m.s.DefaultHandlerExceptionResolver[0;39m [2m:[0;39m Resolved [org.springframework.web.bind.MethodArgumentNotValidException: Validation failed for argument [0] in public java.lang.String com.proyecto.controller.AdminController.registroAdmin(com.proyecto.model.AdministradorEntity,org.springframework.ui.Model,org.springframework.web.multipart.MultipartFile): [Field error in object 'admin' on field 'foto': rejected value [org.springframework.web.multipart.support.StandardMultipartHttpServletRequest$StandardMultipartFile@731252d]; codes [typeMismatch.admin.foto,typeMismatch.foto,typeMismatch.java.lang.String,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [admin.foto,foto]; arguments []; default message [foto]]; default message [Failed to convert property value of type 'org.springframework.web.multipart.support.StandardMultipartHttpServletRequest$StandardMultipartFile' to required type 'java.lang.String' for property 'foto'; Cannot convert value of type 'org.springframework.web.multipart.support.StandardMultipartHttpServletRequest$StandardMultipartFile' to required type 'java.lang.String' for property 'foto': no matching editors or conversion strategy found]] ]

最后是该方法的实现:

@Override
    public void crearAdmin(AdministradorEntity adminEntity, MultipartFile foto) {
        //Guardando image
        String nombreFoto= Utilitarios.guardarImagen(foto);
        adminEntity.setFoto(nombreFoto);
        //Hash password
        String hashPassword = Utilitarios.hashPassword(adminEntity.getContrasenia());
        adminEntity.setContrasenia(hashPassword);
        
        
        adminRepository.save(adminEntity);
    }

目前我正在研究所研究这个,所以我不知道该怎么办。如果您对解决方案有任何想法,或者可能有不同的方法来解决此代码,我想知道。谢谢!!

java spring-mvc spring-framework-beans multipartfile
1个回答
0
投票

发生错误的原因是 AdministradorEntity 类中的

foto
字段。将此字段的名称及其对应的getter和setter更改为
nombreFoto
即可解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.