controller.AddBikeController.java Source code

Java tutorial

Introduction

Here is the source code for controller.AddBikeController.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package controller;

import javax.validation.Valid;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.Errors;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import static org.springframework.web.bind.annotation.RequestMethod.GET;
import static org.springframework.web.bind.annotation.RequestMethod.POST;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

/**
 *
 * @author Merijn
 */
@Controller
public class AddBikeController {

    static Logger logger;
    @Autowired
    dao.GenericDAO dao;

    @RequestMapping(value = "addproduct/bike", method = GET) //GET request voor register geeft model met lege Product-entity door aan de viewResolver
    public String showProductAdd(Model model) {
        model.addAttribute(new model.Bike());
        return "addBike";
    }

    @RequestMapping(value = "addproduct/bike", method = POST) //de form input wordt getoets aan de Product velden, bij fouten terug naar het formulier
    public String processProductAdd(@Valid model.Bike product, Errors errors, RedirectAttributes model) { //RedirectAttributes zijn nodig om de gebruiker ook na redirect te onthouden
        System.out.println(errors.hasErrors());
        System.out.println(errors.hasFieldErrors());
        if (errors.hasErrors() || errors == null) {

            return "addBike";
        } else { //Is de validatie geslaagd van kan het object opgeslagen worden
            dao.saveProduct(product);
            model.addAttribute("id", product.getId());
            model.addFlashAttribute("product", product); //maakt tijdelijke sessie aan voor onthouden van product voorbij de redirect
            return "redirect:/addedbike/" + product.getId();
        }
    }

    @RequestMapping(value = "addedproduct/bike/{producttype}/{id}", method = GET)
    public String showProfile(@PathVariable String producttype, @PathVariable String id, Model model) {
        if (!model.containsAttribute("id")) { //failsafe voor als Flashattribute toch niet blijkt te werken. Dan opnieuw gebruiker opzoeken via URL path variable 'username'
            logger.debug("Geen product in model");
            model.addAttribute(dao.findProductById(Long.parseLong(id), model.Bike.class));
        }

        return "addedBike";
    }
}