Buonasera,
Ho eseguito questa procedura non usuale per mostrare le view all'utente(test sul localhost), tutto funziona ma ChatGpt mi assicura che ho sbagliato perché avrei, e probabilmente è così, fuso le annotazioni in oggetto: @Controller e @RestController.
ChatGpt argomenta che @RestController è da usare con formato JSON mentre @Controller con web page e template.
Procedura funzionante ma errata:
"../static/login.html" (Se uso folder: template non funziona)
@Controller
public class RestControl {
@GetMapping("/login")
public ModelAndView index() {
ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("login.html");
return modelAndView;
}
}
@PostMapping("/login")
public String login(Model model, @ModelAttribute("user_login") User user){
if (userService.checkCredentials(user)) {
return "Autorizzato";
}
else {
return "Non autorizzato";
}
}
Questa è la login.html:
<form th:action="@{/login}" th:object="${user_login}" method="post">
<br>
<label for="username">Username:</label><br>
<input type="text" id="username" name="username" th:field="*{username}"><br>
<hr>
<label for="password">Password:</label><br>
<input type="password" name="password" th:field="*{password}"><hr><br>
<button type="onsubmit" value="Submit">Accedi</button><br>
</form>
Funziona, si, ma io voglio ridirigere l'utente ad una pagina web, non visualizzare semplice testo, ed il metodo PostMapping non consente questo.
A prescindere poi che questo approccio stando a quanto detto da ChatGpt non è formalmente corretto.
Quindi tento di usare @Controller come letto in 1000 pagine WEB,
Creo una classa CController e la annoto con @Controller, volendo uso anche per essa l'annotazione RequestMapping("/") ed inserisco semplicemente:
@GetMapping("/index")
public String login(){
return "login";
}
Mi da errore:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Sat Jul 26 21:21:51 CEST 2025
There was an unexpected error (type=Internal Server Error, status=500).
Non riesco a capire come usare l'annotazione @Controller.