es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Formulario de Primavera th:object y th:field.

Me gustaría capturar solo el nombre de entrada en el objeto spieler.



Este es el controlador:

@PostMapping(“/login”)
public String login (@ModelAttribute(“spieler”) Spieler spieler){
spielerRepository.save(spieler);
return “redirect:/”;
}

y la clase Spieler:

@Data
public class Spieler {
private int id;
private String name;
private int level;
private int punkte;

 public Spieler (String name){
    this.name = name;
    this.level = 1;
    this.punkte = 0;
 }

}

Thymeleaf no lo hace. ¿Cómo puedo solucionar este problema? ¡Lo siento por el mal inglés!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para capturar solo el nombre de entrada en el objeto Spieler, puede modificar el constructor de la clase Spieler para que solo tome un parámetro de tipo string para el nombre, como se muestra a continuación:

    @Data
    public class Spieler {
        private int id;
        private String name;
        private int level;
        private int punkte;
    
        public Spieler(String name) {
            this.name = name;
            this.level = 1;
            this.punkte = 0;
        }
    }
    

    Luego, en el controlador, puede crear un nuevo objeto Spieler solo con el campo de nombre establecido, y guardarlo en el repositorio:

    @PostMapping("/login")
    public String login(@RequestParam("name") String name) {
        Spieler spieler = new Spieler(name);
        spielerRepository.save(spieler);
        return "redirect:/";
    }
    

    Esto capturará solo el nombre de entrada y lo establecerá en el campo de nombre del objeto Spieler, dejando los otros campos con sus valores predeterminados.

Comments are closed.