Как обновить значения существующего объекта по его идентификатору в пути контроллера, используя форму в Spring MVC - PullRequest
0 голосов
/ 17 марта 2020

Я совсем новичок в весне MVC. Я пытаюсь выяснить, как передать новое значение в контроллер и обновить существующий объект, используя форму ввода (введите новое значение и отправьте кнопку).

Я уже добавил два следующих объекта в свой база данных: 1) id = 19, имя = mazda, пробег = 789 2) id = 21, имя = audi, пробег = 453.

Мне удалось обновить только значение пробега первого объекта, но только 'stati c way "внутри контроллера (см. код контроллера). Как обновить / отредактировать значение объекта, используя данные, введенные в форму ввода.

Вот мой класс сущности:

@Entity
@Table(name = "carTable")
public class CarEntity {

    @Id
    @GeneratedValue
    private Long id;

    private String name;
    private double mileage;

//generated getters and setters

Контроллер:

@Controller
@RequestMapping("/carsList")
public class DisplayCarsController {

    private ICarService carService;
    private CarRepository carRepository;

    @Autowired
    public DisplayCarsController(ICarService carService, CarRepository carRepository){
        this.carService = carService;
        this.carRepository = carRepository;
    }

    @RequestMapping
    public String showCars(Model model){
        model.addAttribute("myCarsList", carService.findAllCars());
        return "carsList";
    }

    @RequestMapping(value = "edit-car/{id}")
    public String editCars(CarEntity carEntity, @PathVariable Long id){
        carEntity = carRepository.findOne(id);
        carEntity.setMileage(789);
        carRepository.save(carEntity);
        return "redirect:/carsList";
    }
}

JSP Страница:

<table class="table table-bordered table-hover table-striped">

    <thead>
    <tr>
        <th>Name</th>
        <th>Mileage</th>
        <th>Button name</th>
    </tr>
    </thead>
    <tbody>
    <c:forEach items="${myCarsList}" var="myCars">
        <tr>
            <td>
                <a> ${myCars.name}
                </a>
            </td>
            <td>
                <a> <input type="number" value="${myCars.mileage}">
                </a>
            </td>
            <td>
                <a  href="<spring:url value="/carsList/edit-car/${myCars.id}"/>"
                    class="btn btn-danger">
                    Edit
                </a>
            </td>
        </tr>
    </c:forEach>
    </tbody>
</table>

Что я хочу достичь? Допустим, я бы хотел изменить пробег второго объекта. Я ввожу новое значение в форму ввода на сгенерированной странице, и когда я нажимаю кнопку редактирования, это значение обновляется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...