Home > Net >  Method not supporting error:405 in SpringBoot application
Method not supporting error:405 in SpringBoot application

Time:01-29

I am new to SpringBoot thymeleaf , I simple just make a registration page ,but when I fill the registration details and hit the register button in my registration page it throw below error enter image description here

SignUpPage.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
    <link rel="stylesheet" th:href="@{/../css/SignUp.css}">
    <title>SIGN UP</title>
    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
    <script crossorigin="anonymous" src="https://kit.fontawesome.com/16e8cf656f.js"></script>
    <script type="text/javascript" th:src="@{/js/SignUp.js}"></script>
</head>
<body>

<div >
    <div >
        <!-- For Demo Purpose -->
        <div >
            <img src="https://bootstrapious.com/i/snippets/sn-registeration/illustration.svg" alt="" >
            <h1>Create an Account</h1>
            <p >Create an account to enjoy some services freely.</p>
            </p>
        </div>

        <!-- Registeration Form -->
        <div >
            <form action="#" th:action="@{/saveUser}" th:object="${player}">
                <div >

                    <!-- First Name -->
                    <div >
                        <div >
                            <span >
                                <i ></i>
                            </span>
                        </div>
                        <label for="firstName"></label><input id="firstName" type="text" th:field="*{firstName}" name="firstname" placeholder="First Name" >
                    </div>

                    <!-- Last Name -->
                    <div >
                        <div >
                            <span >
                                <i ></i>
                            </span>
                        </div>
                        <label for="lastName"></label><input id="lastName" type="text" name="lastname" th:field="*{lastName}" placeholder="Last Name" >
                    </div>

                    <!-- Phone Number -->
                    <div >
                        <div >
                            <span >
                                <i ></i>
                            </span>
                        </div>
                        <label for="countryCode"></label><select id="countryCode" name="countryCode" style="max-width: 80px" >
                            <option value=""> 91</option>
                            <option value=""> 972</option>
                            <option value=""> 353</option>
                            <option value=""> 39</option>
                            <option value=""> 254</option>
                            <option value=""> 852</option>
                            <option value=""> 49</option>
                        </select>
                        <label for="phoneNumber"></label><input id="phoneNumber" type="tel" name="phone" th:field="*{phoneNumber}" placeholder="Phone Number" >
                    </div>.

                    <!-- Email Address -->
                    <div >
                        <div >
                            <span >
                                <i ></i>
                            </span>
                        </div>
                        <label for="email"></label><input id="email" type="email" name="email" th:field="*{email}" placeholder="Email Address" >
                    </div>

                    <!-- Password -->
                    <div >
                        <div >
                            <span >
                                <i ></i>
                            </span>
                        </div>
                        <label for="password"></label><input id="password" type="password" name="password" th:field="*{password}" placeholder="Password" >
                    </div>
                    <!-- Submit Button -->
                    <div >
                        <input  type="submit" value="Create Account" />
                    </div>

                    <!-- Divider Text -->
                    <div >
                        <div ></div>
                        <span >OR</span>
                        <div ></div>
                    </div>

                    <!-- Social Login -->
                    <div >
                        <a href="#" >
                            <i ></i>
                            <span >Continue with Facebook</span>
                        </a>
                        <a href="#" >
                            <i ></i>
                            <span >Continue with Twitter</span>
                        </a>
                    </div>

                    <!-- Already Registered -->
                    <div >
                        <p >Already Registered? <a th:href="@{/login}" href="#" >Login</a></p>
                    </div>

                </div>
            </form>
        </div>
    </div>
</div>
</body>
</html>

Controller class

package com.nilmani.herokudemoapplication.controller

import com.nilmani.herokudemoapplication.entity.Player
import com.nilmani.herokudemoapplication.repository.PlayerRepository
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Controller
import org.springframework.ui.Model
import org.springframework.web.bind.annotation.*


@Controller
class PlayerController {
    @Autowired
    private lateinit var playerRepository: PlayerRepository

    @GetMapping("/getSignUp")
    fun getRegistrationPage(model: Model,player: Player):String{
       model.addAttribute("player",Player())
        return "SIgnUpPage"
    }
    /**end point to register the user*/
    @PostMapping("/saveUser")
    fun registerUser(@ModelAttribute("player")player: Player,model: Model):String{
        model.addAttribute("player",Player())
        playerRepository.save(player)
        return "successPage"
    }
}

what is the reason for getting this type of issue I know error 405 means it not supporting the function,But I define everything properly ,why my code is not working I do not understand. I am not able to find my mistakes.

CodePudding user response:

The "/saveUser" endpoint has method POST. The same needs to be reflected in the form element in SignUpPage.html.

<form action="#" th:action="@{/saveUser}" th:object="${player}" th:method="POST">

For more help refer to https://spring.io/guides/gs/handling-form-submission/

CodePudding user response:

Use th:method="POST" while submitting the form to the controller

  •  Tags:  
  • Related