Как правильно сохранить список телефонов юзера в SpringBoot Java используя thymeleaf?

Для сохранения списка телефонов пользователя в Spring Boot Java с использованием Thymeleaf, вам потребуется выполнить несколько шагов:

Шаг 1: Создание модели данных

Сначала вам необходимо создать модель данных для телефона, которая будет представлять собой отдельный класс Java. Например, вы можете создать класс Phone с полями, такими как номер телефона, тип номера и описание:

public class Phone {
  private String number;
  private String type;
  private String description;

  // Создайте геттеры и сеттеры
}

Шаг 2: Создание модели данных пользователя

Затем вы должны создать модель данных пользователя, которая будет содержать список телефонов пользователя. Например, вы можете создать класс User с полем phones:

public class User {
  private List<Phone> phones;

  // Создайте геттеры и сеттеры
}

Шаг 3: Создание контроллера

Теперь вам необходимо создать контроллер, который будет обрабатывать запросы для отображения списка телефонов и сохранения изменений. Создайте класс UserController с методами для отображения списка телефонов и сохранения изменений:

@Controller
public class UserController {

  // Получение списка телефонов
  @GetMapping("/phones")
  public String getPhones(Model model) {
    User user = // Здесь вы должны получить объект пользователя из базы данных или каким-либо другим способом
    model.addAttribute("user", user);
    return "phones";
  }

  // Сохранение изменений
  @PostMapping("/phones")
  public String savePhones(@ModelAttribute User user) {
    // Здесь вы должны сохранить объект пользователя с обновленным списком телефонов в базу данных или каким-либо другим способом
    return "redirect:/phones";
  }
}

Шаг 4: Создание представления Thymeleaf

Теперь вам нужно создать представление Thymeleaf для отображения списка телефонов и редактирования. Создайте файл phones.html в папке resources/templates со следующим содержимым:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">

<head>
  <meta charset="UTF-8">
  <title>Phone List</title>
</head>

<body>

  <h1>Phone List</h1>

  <form action="#" th:action="@{/phones}" th:object="${user}" method="post">
    <table>
      <tr th:each="phone, phoneNumberStat : *{phones}">
        <td><input type="text" th:field="*{phones[__${phoneNumberStat.index}__].number}" /></td>
        <td><input type="text" th:field="*{phones[__${phoneNumberStat.index}__].type}" /></td>
        <td><input type="text" th:field="*{phones[__${phoneNumberStat.index}__].description}" /></td>
      </tr>
    </table>
    <button type="submit">Save</button>
  </form>

</body>

</html>

В этом представлении мы используем Thymeleaf для динамического отображения полей телефона в зависимости от количества телефонов в списке. Мы также используем th:field атрибут для связи полей с соответствующими полями модели данных.

Шаг 5: Настройка маршрутизации

В конце вам нужно настроить маршрутизацию в вашем приложении Spring Boot, чтобы запросы на адрес "/phones" перенаправлялись на методы контроллера UserController. В class-файле вашего приложения добавьте следующий код:

@SpringBootApplication
public class YourApplicationNameApplication {

  public static void main(String[] args) {
    SpringApplication.run(YourApplicationNameApplication.class, args);
  }

  // Добавьте этот бин, чтобы Thymeleaf мог корректно обрабатывать полный путь к css- и js-файлам
  // Если вы используете версию Thymeleaf 3.0.10.RELEASE или выше, вы можете удалить этот бин
  @Bean
  public ServletContextTemplateResolver defaultTemplateResolver() {
    ServletContextTemplateResolver resolver = new ServletContextTemplateResolver();
    resolver.setPrefix("/");
    resolver.setSuffix(".html");
    resolver.setTemplateMode("HTML");
    resolver.setCharacterEncoding("UTF-8");
    return resolver;
  }
}

Теперь, когда вы запускаете ваше приложение Spring Boot, вы можете перейти по адресу "/phones" для отображения списка телефонов и редактирования. После сохранения изменений будет выполнен переадресация на страницу со списком телефонов.

Надеюсь, этот развернутый ответ поможет вам сохранить список телефонов юзера в Spring Boot Java с использованием Thymeleaf!