[JAVA] Passer la classe Form du Controller à Symleaf avec Spring-Boot

Objectif

Configuration minimale lors du passage d'un objet du Controller au modèle affiché dans Thymeleaf

supposition

--Thymeleaf a été installé

procédure

Être une classe Form

ContractListForm.java


package com.contract.web;

import lombok.Data;

@Data
public class ContractListForm{
	private String anken_kbn; //Classification des articles
	private String anken_name; //Titre du projet
}

Être contrôleur

--Créez une instance de la classe Form et placez-la dans le contrôleur --Passez une instance de la classe Form à l'écran

--Générer la classe précédente avec la méthode avec l'annotation @ModelAttribute Cette méthode annotée est automatiquement appelée lorsque la méthode @RequestMapping est appelée (à la réception de la requête). Créez une instance de la classe de formulaire avec cette méthode annotée L'instance créée ici sera enregistrée dans la portée de la requête -Passez l'objet à l'écran avec la méthode @RequestMapping. Dans la méthode addObject, définissez le nom de l'instance côté écran avec le premier argument, recevez de l'écran avec ce nom Passez l'objet qui est réellement passé dans le deuxième argument

ContractListsController


    @ModelAttribute
	ContractListForm setUpForm() {
        return new ContractListForm();
    }

	@RequestMapping(value = "/", method = RequestMethod.GET)
	public ModelAndView index(ModelAndView mav) {
		mav.setViewName("index");
		mav.addObject("contractListF", new ContractListForm()); //Instance de formulaire de recherche
		return mav;

	}

Être un fichier modèle

index.html


<form method="post" action="/Contract/search" th:object="${contractListF}">

index.html


<input type="text" th:field="*{anken_kbn}" class="form-control" aria-describedby="basic-addon2"></input>
<input type="text" th:field="*{anken_name}" class="form-control" aria-describedby="basic-addon2"></input>

――Le champ qu'il contient est

Si ce paramètre n'est pas effectué, l'erreur suivante se produit. --Bien que l'accesseur soit défectueux, le même message d'erreur s'affiche même lorsque la règle ci-dessus n'est pas réellement établie.


org.springframework.beans.NotReadablePropertyException: Invalid property 'contractListForm' of bean class [com.contract.web.ContractListForm]: Bean property 'contractListForm' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?

Point confus

«J'étais confus lorsque j'ai reçu l'objet du référentiel, je l'ai écrit comme suit.

index.html


<tr th:each="obj : ${contractList}">
				<td th:text="${obj.anken_kbn}"></td>
				<td th:text="${obj.anken_mei}"></td>

La méthode de demande du contrôleur envoyé ici est en fait la même qu'avant, et c'était en fait comme ça

ContractListsController.java


@RequestMapping(value = "/", method = RequestMethod.GET)
	public ModelAndView index(ModelAndView mav) {
		mav.setViewName("index");
		Iterable<TMitsumoriHdrEntity> hdrEntityList = hdrDao.findAll();
		mav.addObject("contractList", hdrEntityList);
		mav.addObject("contractListF", new ContractListForm()); //Instance de formulaire de recherche
		return mav;

	}
mav.addObject("contractList", hdrEntityList);
<tr th:each="obj : ${contractList}">

--Received in th: each, variable: $ {in instance name} --Pour cette variable

 <td th:text="${obj.anken_kbn}"></td>


Résumé

exemple exempleの取り方 Comment prendre le terrain
Form(POJO)Objet th:object="${contractListF}" th:field="*{anken_kbn}
Objet d'entité th:each="obj : ${contractList}" th:text="${obj.anken_kbn}"

Recommended Posts

Passer la classe Form du Controller à Symleaf avec Spring-Boot
Passer de JSP + JSTL à Thymeleaf
[Kotlin] Trois façons d'obtenir un cours depuis KClass
[Rails] Assignation de variables du contrôleur à JavaScript
Transition de Struts2 à Spring MVC (contrôleur)
[SpringBoot] Comment écrire un test de contrôleur
De (écran)
Transformer d'une classe normale en un style lambda
Collection de sites utiles SpringBoot (mise à jour de temps en temps)
Migrer de Java vers Kotlin côté serveur + Spring-boot
Comment obtenir une classe depuis Element en Java
Comment séparer .scss par contrôleur dans Rails