已解决[org.springframework.web.HttpMediaTypeNotSupportedException:Content-Type 'application/x-www-form-urlencoded;不支持“charset=UTF-8”

nbysray5  于 12个月前  发布在  Spring
关注(0)|答案(1)|浏览(329)

已解决[org.springframework.web.HttpMediaTypeNotSupportedException:Content-Type 'application/x-www-form-urlencoded; charset=UTF-8'不受支持]
我得到这个错误,当我试图连接我的Spring Boot 应用程序与html文件

实体类

package com.signup.page.signup.model;

import jakarta.persistence.Entity;
import jakarta.persistence.Id;

@Entity
public class signUp {
    @Id
    private String email;
    private String firstName;
    private String lastName;
    private String password;
    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public signUp(String firstName, String lastName, String email, String password) {
        super();
        this.firstName = firstName;
        this.lastName = lastName;
        this.email = email;
        this.password = password;
    }
    public signUp() {
        super();
    }
    
    
}

仓库类

package com.signup.page.signup.repository;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import com.signup.page.signup.model.signUp;

@Repository
public interface modelRepository extends JpaRepository<signUp, String>  {

}

服务等级

package com.signup.page.signup.service;

import org.springframework.stereotype.Service;

import com.signup.page.signup.model.signUp;
import com.signup.page.signup.repository.modelRepository;

@Service
public class modelService {
    
    private final modelRepository ModelRepository;

    public modelService(modelRepository ModelRepository) {
        //super();
        this.ModelRepository = ModelRepository;
    }
    
    public signUp registerUser(signUp SignUp) {
        return ModelRepository.save(SignUp);
        
    }
    

}

控制器类

package com.signup.page.signup.controller;

import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.signup.page.signup.model.signUp;
import com.signup.page.signup.service.modelService;

@RestController
@RequestMapping("/signup")

public class modelController {
    
    private final modelService ModelService;

    public modelController(modelService ModelService) {
        //super();
        this.ModelService = ModelService;
    }
    
    @PostMapping(value="/register", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
    public ResponseEntity<signUp> registerUser(@RequestBody signUp SignUp){
        signUp registeredUser = ModelService.registerUser(SignUp);
        return ResponseEntity.ok(registeredUser);
    }

}

HTML文件

<!DOCTYPE html>
<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <meta http-equiv='X-UA-Compatible' content='IE=edge'>
    <title>SignUp</title>
    <meta name='viewport' content='width=device-width, initial-scale=1'>
    <link rel='stylesheet' type='text/css' media='screen' href='main.css'>
    <script src='main.js'></script>
</head>
<body>
    <form method="post" action="/signup/register" enctype="application/x-www-form-urlencoded">>
    <div class="signuppage">
        <label for = "firstName"><b>First Name</b></label>
        <input type="text" placeholder="Enter First Name" name="firstName" required><br>

        <label for = "lastName"><b>Last Name</b></label>
        <input type="text" placeholder="Enter Last Name" name="lastName" required><br>

        <label for = "email"><b>Email</b></label>
        <input type="text" placeholder="Enter email" name="email" required><br>

        <label for = "password"><b>Password</b></label>
        <input type="password" placeholder="Enter Password" name="password" required><br>

        <button type = "submit">Sign Up</button>
    </div>
</form>  
</body>
</html>
when i submit the form i am getting[36m.w.s.m.s.DefaultHandlerExceptionResolver[0;39m [2m:[0;39m Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content-Type 'application/x-www-form-urlencoded;charset=UTF-8' is not supported]

此错误
我该怎么解决这个问题

xv8emn3q

xv8emn3q1#

Spring在使用application/x-www-form-urlencoded时无法识别它是一个RequestBody。
尝试删除@RequestBody注解。

相关问题