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
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

