Как правильно сохранить список телефонов пользователя в приложении Spring Boot на языке Java с использованием Thymeleaf?

Привет! У меня возникли проблемы с сохранением списка телефонов при создании базы данных пользователей. Можете помочь мне с этим?
  • 3 октября 2023 г. 8:27
Ответы на вопрос 1
Конечно, я с радостью помогу! 

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

1. Создайте сущность User с полями, включая поле phones для хранения списка телефонов. Например:

```java
@Entity
public class User {
    // другие поля

    @ElementCollection
    private List<String> phones;
    
    // геттеры и сеттеры
}
```

2. Создайте репозиторий для доступа к базе данных:

```java
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}
```

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

```java
@Controller
public class UserController {
    private final UserRepository userRepository;

    public UserController(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    @GetMapping("/users/new")
    public String createUserForm(Model model) {
        model.addAttribute("user", new User());
        return "createUserForm";
    }

    @PostMapping("/users")
    public String createUser(@ModelAttribute("user") User user) {
        userRepository.save(user);
        return "redirect:/users";
    }
}
```

4. Создайте HTML-шаблон createUSerForm.html с формой для добавления пользователя и его телефонов:

```html
<form id="userForm" action="/users" method="post" th:object="${user}">
    <!-- другие поля пользователя -->
    
    <label for="phones">Телефоны:</label>
    <input type="text" id="phones" name="phones" th:field="*{phones}" multiple="multiple">
    
    <input type="submit" value="Сохранить">
</form>
```

5. Создайте страницу для отображения списка пользователей:

```java
@Controller
public class UserController {
    // ...

    @GetMapping("/users")
    public String getUsers(Model model) {
        List<User> users = userRepository.findAll();
        model.addAttribute("users", users);
        return "users";
    }
}
```

6. Создайте HTML-шаблон users.html для отображения списка пользователей:

```html
<table>
    <thead>
        <tr>
            <th>Имя</th>
            <!-- другие заголовки -->
            <th>Телефоны</th>
        </tr>
    </thead>
    <tbody>
        <tr th:each="user : ${users}">
            <td th:text="${user.name}"></td>
            <!-- другие ячейки -->
            <td th:text="${user.phones}"></td>
        </tr>
    </tbody>
</table>
```

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

Надеюсь, это поможет вам решить проблему! Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.
Похожие вопросы