Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: [Java] Spring

  1. #1

    [Java] Spring

    Ho il codice che segue in spring:

    codice:
    @Controller
    
    //Nella classe indexController
    @RequestMapping("/")
    public class IndexController {
            
        
        private Model SetModel(Model model) {
            
            model.addAttribute("attributo1", "Benvenuto nel sito!");        
            
            return model;
            
        }
        
        @GetMapping
        public String Welcome (Model model) {        
            this.SetModel(model);
            return "index";    
        }        
    
        //INVIO con POST il nome "LEO"
        @RequestMapping(method = RequestMethod.POST)
        public String handlePostRequest (User user, Model model) {    
            user.setName("LEO");
            return "accesso";
        }
        
        
        
    }
    
    
    @Controller
    //Nella clase Accedi:
    @RequestMapping("/accesso")
    public class Accedi {
    
    //RICEVO la richiesta col GET?
    @RequestMapping(method = RequestMethod.GET)
    public String handlGetRequest (User user, Model model) {
            //Perchè da NULL user.getName?
            System.out.println(user.getName());
            return "accesso";
    }
        
    
    }
    Non capisco perché ritorna null il nome...Devo instanziare user? Come risolve?
    jabjoint

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da jabjoint Visualizza il messaggio
    Non capisco perché ritorna null il nome...Devo instanziare user? Come risolve?
    Se il POST è da un classico form di una pagina web (quindi non stiamo parlando di web service REST o altro), allora il body è nel classico content-type application/x-www-form-urlencoded.

    E in tal caso devi mettere:

    public String handlePostRequest(@ModelAttribute User user, Model model)

    E chiaramente le "proprietà" della classe User dovranno corrispondere con i nomi dei dati passati in POST (ovvero i name nel form)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Ciao AndBin:
    In verità è SPRING BOOT:
    Ecco l'errore ora:
    "No primary or single unique constructor found for class java.lang.Module

    java.lang.IllegalStateException: No primary or single unique constructor found for class java.lang.Module"

    Sembrerebbe che devo aggiungere un custruttore "unique"
    jabjoint

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da jabjoint Visualizza il messaggio
    In verità è SPRING BOOT:
    Non c'entra, può essere Spring "puro" o Spring Boot, non c'è differenza a livello dei controller. Ma i controller Spring li puoi scrivere per gestire pagine web o web service (es. stile REST), e ovviamente sono scenari diversi e si usano approcci diversi.

    Quote Originariamente inviata da jabjoint Visualizza il messaggio
    Ecco l'errore ora:
    "No primary or single unique constructor found for class java.lang.Module
    A prima vista non c'entrerebbe niente ..... non è che hai scritto cose tipo Module invece di Model ?? Ovviamente Module NON è quello che ti serve.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Non c'entra, può essere Spring "puro" o Spring Boot, non c'è differenza a livello dei controller. Ma i controller Spring li puoi scrivere per gestire pagine web o web service (es. stile REST), e ovviamente sono scenari diversi e si usano approcci diversi.


    A prima vista non c'entrerebbe niente ..... non è che hai scritto cose tipo Module invece di Model ?? Ovviamente Module NON è quello che ti serve.

    No infatti quell'errore era dovuto al fatto che mettevo nel get il parametro del modulo.
    Tuttavia non funziona tutt'ora. Continua a dare null...
    jabjoint

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da jabjoint Visualizza il messaggio
    Tuttavia non funziona tutt'ora. Continua a dare null...
    Mostra come è fatta User e come è fatto il <form> che invia i dati.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Mostra come è fatta User e come è fatto il <form> che invia i dati.
    codice:
    //Rinominato user in utente 
    
    public class Utente {
        
        private Long ID;
        
        private String nome;
        private String cognome;
        
        public Long ID() {
            return ID;        
        }
        
        public void ID(Long ID) {
            this.ID = ID;        
        }
    
        public String nome () {
            return nome;
        }
    
        public void nome(String nome) {
            this.nome = nome;
        }
        
    
        public String cognome() {
            return cognome;
        }
        
        public void cognome(String cognome) {
            this.cognome = cognome;
        }
    
        
        
    }
    //FORM:
    codice HTML:
            <form method="post" action = "accesso"> 
                <input name="nome" type="text" value="Mario"/>
                <input name="cognome" type="text" value="Rossi"/>
                <input type="submit" value="Accedi!"/>            
            </form>    
    jabjoint

  8. #8
    Note che ho cambiato il "Get" di Request in "Post":

    //1
    codice:
    @Controller
    
    @RequestMapping("/accesso")
    public class Accedi {   
    
    @RequestMapping(method = RequestMethod.POST)
    public String handlePostRequest(Utente utente, Model model) {
    
            System.out.println(utente.nome());
                
            return "accesso";
            
    }
    
    /*------------------------------------------------------*/
        
    //2
    @Controller
    
    
    @RequestMapping("/")
    public class IndexController {
        
                
        private Model SetModel(Model model) {
            
            model.addAttribute("intestazione", "Benvenuto nel sito!");
            model.addAttribute("saluti", "Welcome");
            
            return model;
            
        }
        
        @GetMapping
        public String Welcome (Model model) {        
            this.SetModel(model);
            return "index";    
        }        
    
        @RequestMapping(method = RequestMethod.POST)    
        public String handlePostRequest(Utente utente) {        
            System.out.println(utente.nome());
            return "accesso";
        }
        
        
        
    }
    Ultima modifica di jabjoint; 20-10-2022 a 23:29
    jabjoint

  9. #9
    Note che ho cambiato il "Get" di Request in "Post":


    @Controller

    @RequestMapping("/accesso")
    public class Accedi {

    @RequestMapping(method = RequestMethod.POST)
    public String handlePostRequest(Utente utente, Model model) {

    System.out.println(utente.nome());

    return "accesso";

    }



    //Classe controller
    @Controller


    @RequestMapping("/")
    public class IndexController {


    private Model SetModel(Model model) {

    model.addAttribute("intestazione", "Benvenuto nel sito!");
    model.addAttribute("saluti", "Welcome");

    return model;

    }

    @GetMapping
    public String Welcome (Model model) {
    this.SetModel(model);
    return "index";
    }

    @RequestMapping(method = RequestMethod.POST)
    public String handlePostRequest(Utente utente) {
    System.out.println(utente.nome());
    return "accesso";
    }



    }
    jabjoint

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Nella classe Utente devi rispettare le specifiche JavaBeans. Se si vuole avere una proprietà "nome", devi mettere i metodi getNome e setNome.
    Nota: il nome della proprietà NON c'entra con il nome del field. Possono essere diversi, anche se generalmente coincidono.
    Il nome della proprietà viene dedotto solo dai metodi getter/setter.

    E inoltre nel controller:

    public String handlePostRequest(@ModelAttribute Utente utente)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.