@Dima_gogi_ya
Начинающий гений-программист

Не добавляются данные в таблицу при нажатии на input (java). Как это исправить?

Раньше у меня было две html странички: одна выводит пользователей, вторая создаёт. Обе работали, но при нажаатии на input страничка просто обновлялась, и если в url перейти на страничку с пользователями, данные добавлялись.
Я объединил эти две странички, таблица теперь выглядит так: первая строчка - название колонн, вторая - добавление данных, третья и последующие - вывод данных. НО! Теперь при нажатии на input не только не перезагружается страничка, но и не добавляет данные. Я знаю, что я нашаманил с маппингом, но как это правильно сделать я не знаю. Перевернул "спринг в действии", перевернул русскоязычный интернет, ответ не нашёл. Объясните джуну, в чём проблема и как правильно это делается

Вьюшка:

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8" />
    <title>Список сотрудников</title>
    <link rel="stylesheet" type="text/css" th:href="@{/css/style.css}"/>
</head>
<body>
<h1>Список</h1>
<br/><br/>
<div> <!--Пробная страничка, для объединения user.html и user_created.html-->
    <table border="1">
        <tr>
            <th>ID</th>
            <th>Имя</th>
            <th>Фамилия</th>
            <th>Почта</th>
            <th>Номер тел.</th>
        </tr>
        <tr form th:action="@{/}"
            th:object="${addUser}" method="POST">
            <td><input/></td>
            <td><input type="text" th:field="*{lastName}" /></td>
            <td><input type="text" th:field="*{firstName}" /></td>
            <td><input type="text" th:field="*{email}" /></td>
            <td><input type="text" th:field="*{number}" /></td>
            <input type="submit" value="add" />
            </form>
        </tr>
        <tr th:each ="user : ${user}">
            <td th:utext="${user.id}">...</td>
            <td th:utext="${user.firstName}">...</td>
            <td th:utext="${user.lastName}">...</td>
            <td th:utext="${user.email}">...</td>
            <td th:utext="${user.number}">...</td>
        </tr>
    </table>
</div>
</body>
</html>


Контроллер:
package ru.noorsoft.javaeducation;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

@Controller
public class UsersController {

    @Autowired
    private UserRepository us;

    public UsersController(UserRepository us) {
        this.us = us; //объект репозитория
        us.save(new User("Dmitry", "Volokitin", "zoldaten48@gmail.com", "89005910999"));//добавление
        //пробного пользователя, для отображения в таблице
    }
AddUser addUsers = new AddUser();
    @GetMapping("/")
    public String greeting(Model model, @ModelAttribute("addUser") AddUser addUser) {

        model.addAttribute("user", us.findAll());
        model.addAttribute("addUser", addUser);

        String firstName = addUser.getFirstName();
        String lastName = addUser.getLastName();
        String email = addUser.getEmail();
        String number = addUser.getNumber();

//функция проверки, заполнены ли ячейки с именем и фамилией
        if (firstName != null && firstName.length() > 0 //
                && lastName != null && lastName.length() > 0) {
            User newUser = new User(firstName, lastName, email, number);
            us.save(newUser);

            return "redirect:users";
        }
        model.addAttribute("errorMessage", errorMessage);

        return "users";
    }

    @Value("${welcome.message}")
    private String message;

    @Value("${error.message}")
    private String errorMessage;
}


https://github.com/chpokerstyle/java-spring-master/
  • Вопрос задан
  • 137 просмотров
Решения вопроса 1
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
<tr form th:action="@{/}"
            th:object="${addUser}" method="POST">
            <td><input/></td>
            <td><input type="text" th:field="*{lastName}" /></td>
            <td><input type="text" th:field="*{firstName}" /></td>
            <td><input type="text" th:field="*{email}" /></td>
            <td><input type="text" th:field="*{number}" /></td>
            <input type="submit" value="add" />
            </form>

Ну для начала посмотрите на этот кусок кода. У вас там что-то неладное. тег form вложен в тег tr
<tr form th:action="@{/}"
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы