Spring MVC przekierowanie po walidacji formularza

0

Hej. Robię stronę w oparciu o pewną formatkę --> http://www.mkyong.com/spring-mvc/spring-mvc-form-handling-example/
Chciałbym zwrócić się o pomoc, mam już gotowy formularz "wstępnego" obliczania składki ubezpieczenia samochodu, walidacja działa i kiedy wszystkie dane są poprawne chcę żeby użytkownik został przekierowany na stronę główną, jednak nic się nie dzieje, czy któs mógłby mi powiedzieć gdzie leży błąd?

Kontroler

package com.mkyong.form.web;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import com.mkyong.form.model.UbezpieczenieSamochodu;
import com.mkyong.form.service.UbezpieczenieSamochoduService;
import com.mkyong.form.validator.UbezpieczenieSamochoduFormValidator;

@Controller
public class UbezpieczenieSamochoduController {
	
	private final Logger logger = LoggerFactory.getLogger(UbezpieczenieSamochoduController.class);
	
	@Autowired
	UbezpieczenieSamochoduFormValidator ubezpieczenieSamochoduFormValidator;
	
	@InitBinder
	protected void initBinder(WebDataBinder binder) {
		binder.setValidator(ubezpieczenieSamochoduFormValidator);
	}
	
	private UbezpieczenieSamochoduService ubezpieczenieSamochoduService;
	
	@Autowired
	public void setUbezpieczenieSamochoduService(UbezpieczenieSamochoduService ubezpieczenieSamochoduService) {
		this.ubezpieczenieSamochoduService = ubezpieczenieSamochoduService;
	}
	
	@RequestMapping (value = "/", method = RequestMethod.GET)
	public String index(Model model) {
		logger.debug("index()");
		return "redirect:/ubezpieczenia";
	}
	
	@RequestMapping (value = "/ubezpieczenia", method = RequestMethod.GET)
	public String showMainPage(Model model) {
		logger.debug("ShowMainPage()");
		model.addAttribute("users",ubezpieczenieSamochoduService.findAll());
		return "users/stronaGlowna";
		
	}
	
	
	
	
	@RequestMapping(value = "/ubezpieczenia/dodaj", method = RequestMethod.GET)
	public String showAddUbezpiecznieSamochoduForm(Model model) {
		
		logger.debug("showAddUbezpieczenieSamochoduForm");
		
		UbezpieczenieSamochodu ubezpieczenieSamochodu = new UbezpieczenieSamochodu();
		
		ubezpieczenieSamochodu.setRokProdukcji(1994);
		ubezpieczenieSamochodu.setMarka("Audi");
		ubezpieczenieSamochodu.setModel("80");
		ubezpieczenieSamochodu.setPojemnoscSilnika("od 0.9 do 1.2");
		ubezpieczenieSamochodu.setWersjaNadwozia("Sedan");
		ubezpieczenieSamochodu.setZakresUbezpieczenia("OC");
		ubezpieczenieSamochodu.setKierowcyPonizej26RokuZycia("Nie");
		ubezpieczenieSamochodu.setLiczbaLatJazdyBezszkod("2");
		ubezpieczenieSamochodu.setLiczbaSzkodOst5Lat("0");
		ubezpieczenieSamochodu.setSredniRocznyPrzebiegKm("20001-40000");
		ubezpieczenieSamochodu.setStanCywilny("Kawaler/Panna");
		ubezpieczenieSamochodu.setTelefon(723485375);
		ubezpieczenieSamochodu.setDataUrodzenia("20-09-1994");
		ubezpieczenieSamochodu.setDataRozpoczeciaUbezpieczenia("30-06-2017");
		
		
		model.addAttribute("ubezpieczenieSamochoduForm",ubezpieczenieSamochodu);
		
		populateDefaultModel(model);
		
		return "users/ubezpieczenieSamochoduForm";
	}
	
	@RequestMapping(value = "/ubezpieczenia", method = RequestMethod.POST)
	public String saveOrUpdateUbezpieczenieSamochodu(@ModelAttribute("ubezpieczenieSamochoduForm") @Validated UbezpieczenieSamochodu ubezpieczenieSamochodu,
			BindingResult result, Model model, final RedirectAttributes redirectAttributes) {
		
		logger.debug("saveOrUpdateUbezpieczenieSamochodu() : {}", ubezpieczenieSamochodu);
		
		if (result.hasErrors()) {
			populateDefaultModel(model);
			return "users/ubezpieczenieSamochoduForm";
		} else {
			
		/*	redirectAttributes.addFlashAttribute("cdc","complete!");
		
			if (ubezpieczenieSamochodu.isNew())
				redirectAttributes.addFlashAttribute("wiadomosc","uzytkownik dodany");
		 else {
			redirectAttributes.addFlashAttribute("wiadomosc2","uzytkownik zaktualizowany");
		}
		*/
		ubezpieczenieSamochoduService.saveOrUpdate(ubezpieczenieSamochodu);
		
			// + ubezpieczenieSamochodu.getId();
		//return "redirect:/ubezpieczenia";
		return "redirect:/ubezpieczenia";
		}
	}
	
	private void populateDefaultModel(Model model) {
		
		List<String> pojemnoscSilnika = new ArrayList<String>();
		pojemnoscSilnika.add("od 0.9 do 1.2");
		pojemnoscSilnika.add("od 1.2 do 1.6");
		pojemnoscSilnika.add("od 1.6 do 2.0");
		pojemnoscSilnika.add("od 2.0 do 3.0");
		model.addAttribute("pojemnoscSilnika",pojemnoscSilnika);
		
		List<String> wersjaNadwozia = new ArrayList<String>();
		wersjaNadwozia.add("Sedan");
		wersjaNadwozia.add("Kombi");
		wersjaNadwozia.add("Hatchback");
		wersjaNadwozia.add("SUV");
		wersjaNadwozia.add("Coupe");
		wersjaNadwozia.add("Cabriolet");
		model.addAttribute("wersjaNadwozia",wersjaNadwozia);
		
		List<String> zakresUbezpieczenia = new ArrayList<String>();
		zakresUbezpieczenia.add("OC");
		zakresUbezpieczenia.add("OC i AC");
		model.addAttribute("zakresUbezpieczenia", zakresUbezpieczenia);
		
		List<String> kierowcyPonizej26RokuZycia = new ArrayList<String>();
		kierowcyPonizej26RokuZycia.add("Tak");
		kierowcyPonizej26RokuZycia.add("Nie");
		model.addAttribute("kierowcyPonizej26RokuZycia", kierowcyPonizej26RokuZycia);
		
		List<String> liczbaLatJazdyBezszkod = new ArrayList<String>();
		liczbaLatJazdyBezszkod.add("1");
		liczbaLatJazdyBezszkod.add("2");
		liczbaLatJazdyBezszkod.add("3");
		liczbaLatJazdyBezszkod.add("4");
		liczbaLatJazdyBezszkod.add("5");
		model.addAttribute("liczbaLatJazdyBezszkod", liczbaLatJazdyBezszkod);
		
		List<String> liczbaSzkodOst5Lat = new ArrayList<String>();
		liczbaSzkodOst5Lat.add("0");
		liczbaSzkodOst5Lat.add("1");
		liczbaSzkodOst5Lat.add("2");
		liczbaSzkodOst5Lat.add("3");
		liczbaSzkodOst5Lat.add("więcej niż 3");
		model.addAttribute("liczbaSzkodOst5Lat", liczbaSzkodOst5Lat);
		
		List<String> sredniRocznyPrzebiegKm = new ArrayList<String>();
		sredniRocznyPrzebiegKm.add("Poniżej 5000");
		sredniRocznyPrzebiegKm.add("5001-10000");
		sredniRocznyPrzebiegKm.add("10001-20000");
		sredniRocznyPrzebiegKm.add("20001-40000");
		sredniRocznyPrzebiegKm.add("Więcej niż 40000");
		model.addAttribute("sredniRocznyPrzebiegKm", sredniRocznyPrzebiegKm);
		
		List<String> stanCywilny = new ArrayList<String>();
		stanCywilny.add("Kawaler/Panna");
		stanCywilny.add("Żonaty/Zamężna");
		stanCywilny.add("Rozwodnik/Rozwódka");
		stanCywilny.add("Wdowiec/Wdowa");
		model.addAttribute("stanCywilny", stanCywilny);
	}
	
	@ExceptionHandler(EmptyResultDataAccessException.class)
	public ModelAndView handleEmptyData(HttpServletRequest req, Exception ex) {

		logger.debug("handleEmptyData()");
		logger.error("Request: {}, error ", req.getRequestURL(), ex);

		ModelAndView model = new ModelAndView();
		model.setViewName("users/show");
		model.addObject("msg", "nie znaleziono");

		return model;

	}

}

Strona formularza

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
	
<%@ page session="false"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>

<!DOCTYPE html>
<html lang="en">

<spring:url value="/resources/core/css/bootstrap.min.css" var="bootstrapCss" />
<link href="${bootstrapCss}" rel="stylesheet" />
<link href="${coreCss}" rel="stylesheet" />


<div class="container">

	 <c:choose>
		<c:when test="${ubezpieczenieSamochoduForm['new']}">
			<h1>Oblicz składkę ubezpieczenia samochodu</h1>
		</c:when>
		<c:otherwise>
			<h1></h1>
		</c:otherwise>
	</c:choose>
	<br /> 

	<spring:url value="/ubezpieczenia" var="ubezpieczenieSamochoduOblicz" /> 

	<form:form class="form-horizontal" method="post" modelAttribute="ubezpieczenieSamochoduForm" action="${ubezpieczenieSamochoduOblicz}">

		<form:hidden path="id" />

		<spring:bind path="rokProdukcji">
			<div class="form-group ${status.error ? 'has-error' : ''}">
				<label class="col-sm-2 control-label">Rok Produkcji</label>
				<div class="col-sm-10">
					<form:input path="rokProdukcji" type="text" class="form-control " id="rokProdukcji" placeholder="Rok produkcji" />
					<form:errors path="rokProdukcji" class="control-label" />
				</div>
			</div>
		</spring:bind>
		
		<spring:bind path="marka">
			<div class="form-group ${status.error ? 'has-error' : ''}">
				<label class="col-sm-2 control-label">Marka</label>
				<div class="col-sm-10">
					<form:input path="marka" type="text" class="form-control " id="marka" placeholder="Marka" />
					<form:errors path="marka" class="control-label" />
				</div>
			</div>
		</spring:bind>
		
		<spring:bind path="model">
			<div class="form-group ${status.error ? 'has-error' : ''}">
				<label class="col-sm-2 control-label">Model</label>
				<div class="col-sm-10">
					<form:input path="Model" type="text" class="form-control " id="model" placeholder="Model" />
					<form:errors path="Model" class="control-label" />
				</div>
			</div>
		</spring:bind>
		
		 <spring:bind path="pojemnoscSilnika">
			<div class="form-group ${status.error ? 'has-error' : ''}">
				<label class="col-sm-2 control-label">Pojemność silnika</label>
				<div class="col-sm-5">
					<form:select path="pojemnoscSilnika" class="form-control">
						<form:option value="NONE" label="--- Wybierz ---" />
						<form:options items="${pojemnoscSilnika}" />
					</form:select>
					<form:errors path="pojemnoscSilnika" class="control-label" />
				</div>
				<div class="col-sm-5"></div>
			</div>
		</spring:bind>
		
			   <spring:bind path="wersjaNadwozia">
			<div class="form-group ${status.error ? 'has-error' : ''}">
				<label class="col-sm-2 control-label">Wersja Nadwozia</label>
				<div class="col-sm-5">
					<form:select path="wersjaNadwozia" class="form-control">
						<form:option value="NONE" label="--- Wybierz ---" />
						<form:options items="${wersjaNadwozia}" />
					</form:select>
					<form:errors path="wersjaNadwozia" class="control-label" />
				</div>
				<div class="col-sm-5"></div>
			</div>
		</spring:bind> 
		
		
		 <spring:bind path="sredniRocznyPrzebiegKm">
			<div class="form-group ${status.error ? 'has-error' : ''}">
				<label class="col-sm-2 control-label">sredniRocznyPrzebiegKm</label>
				<div class="col-sm-5">
					<form:select path="sredniRocznyPrzebiegKm" class="form-control">
						<form:option value="NONE" label="--- Wybierz ---" />
						<form:options items="${sredniRocznyPrzebiegKm}" />
					</form:select>
					<form:errors path="sredniRocznyPrzebiegKm" class="control-label" />
				</div>
				<div class="col-sm-5"></div>
			</div>
		</spring:bind> 
		
		<spring:bind path="zakresUbezpieczenia">
			<div class="form-group ${status.error ? 'has-error' : ''}">
				<label class="col-sm-2 control-label">Zakres Ubezpieczenia</label>
				<div class="col-sm-5">
					<form:select path="zakresUbezpieczenia" class="form-control">
						<form:option value="NONE" label="--- Wybierz ---" />
						<form:options items="${zakresUbezpieczenia}" />
					</form:select>
					<form:errors path="zakresUbezpieczenia" class="control-label" />
				</div>
				<div class="col-sm-5"></div>
			</div>
		</spring:bind>
		
		<spring:bind path="plec">
			<div class="form-group ${status.error ? 'has-error' : ''}">
				<label class="col-sm-2 control-label">Pleć</label>
				<div class="col-sm-10">
					<label class="radio-inline"> <form:radiobutton path="plec" value="M" /> Mężczyzna
					</label> <label class="radio-inline"> <form:radiobutton path="plec" value="F" /> Kobieta
					</label> <br />
					<form:errors path="plec" class="control-label" />
				</div>
			</div>
		</spring:bind>
		
		
		<spring:bind path="stanCywilny">
			<div class="form-group ${status.error ? 'has-error' : ''}">
				<label class="col-sm-2 control-label">Stan cywilny</label>
				<div class="col-sm-5">
					<form:select path="stanCywilny" class="form-control">
						<form:option value="NONE" label="--- Wybierz ---" />
						<form:options items="${stanCywilny}" />
					</form:select>
					<form:errors path="stanCywilny" class="control-label" />
				</div>
				<div class="col-sm-5"></div>
			</div>
		</spring:bind>
		
		
		<spring:bind path="dataUrodzenia">
			<div class="form-group ${status.error ? 'has-error' : ''}">
				<label class="col-sm-2 control-label">Data urodzenia</label>
				<div class="col-sm-10">
					<form:input path="dataUrodzenia" type="text" class="form-control " id="dataUrodzenia" placeholder="Data urodzenia" />
					<form:errors path="dataUrodzenia" class="control-label" />
				</div>
			</div>
		</spring:bind>
		
		
		 <spring:bind path="rokWydaniaPrawaJazdy">
			<div class="form-group ${status.error ? 'has-error' : ''}">
				<label class="col-sm-2 control-label">Rok wydania prawa jazdy</label>
				<div class="col-sm-10">
					<form:input path="rokWydaniaPrawaJazdy" type="text" class="form-control " id="rokWydaniaPrawaJazdy" placeholder="Rok wydania prawa jazdy" />
					<form:errors path="rokWydaniaPrawaJazdy" class="control-label" />
				</div>
			</div>
		</spring:bind> 
		
		
		<spring:bind path="kierowcyPonizej26RokuZycia">
			<div class="form-group ${status.error ? 'has-error' : ''}">
				<label class="col-sm-2 control-label">Kierowcy poniżej 26 roku życia</label>
				<div class="col-sm-5">
					<form:select path="kierowcyPonizej26RokuZycia" class="form-control">
						<form:option value="NONE" label="--- Wybierz ---" />
						<form:options items="${kierowcyPonizej26RokuZycia}" />
					</form:select>
					<form:errors path="kierowcyPonizej26RokuZycia" class="control-label" />
				</div>
				<div class="col-sm-5"></div>
			</div>
		</spring:bind>
		
		
		 <spring:bind path="liczbaLatJazdyBezszkod">
			<div class="form-group ${status.error ? 'has-error' : ''}">
				<label class="col-sm-2 control-label">Liczba lat jazdy bezszkodowej</label>
				<div class="col-sm-5">
					<form:select path="liczbaLatJazdyBezszkod" class="form-control">
						<form:option value="NONE" label="--- Wybierz ---" />
						<form:options items="${liczbaLatJazdyBezszkod}" />
					</form:select>
					<form:errors path="liczbaLatJazdyBezszkod" class="control-label" />
				</div>
				<div class="col-sm-5"></div>
			</div>
		</spring:bind>
		
		
		<spring:bind path="liczbaSzkodOst5Lat">
			<div class="form-group ${status.error ? 'has-error' : ''}">
				<label class="col-sm-2 control-label">Liczba szkod w ostatnich 5 latach</label>
				<div class="col-sm-5">
					<form:select path="liczbaSzkodOst5Lat" class="form-control">
						<form:option value="NONE" label="--- Wybierz ---" />
						<form:options items="${liczbaSzkodOst5Lat}" />
					</form:select>
					<form:errors path="liczbaSzkodOst5Lat" class="control-label" />
				</div>
				<div class="col-sm-5"></div>
			</div>
		</spring:bind>



		<spring:bind path="telefon">
			<div class="form-group ${status.error ? 'has-error' : ''}">
				<label class="col-sm-2 control-label">Telefon</label>
				<div class="col-sm-10">
					<form:input path="telefon" type="text" class="form-control " id="telefon" placeholder="Telefon" />
					<form:errors path="telefon" class="control-label" />
				</div>
			</div>
		</spring:bind>
 


		 <spring:bind path="adresEmail">
			<div class="form-group ${status.error ? 'has-error' : ''}">
				<label class="col-sm-2 control-label"> Adres email</label>
				<div class="col-sm-10">
					<form:input path="adresEmail" class="form-control" id="adresEmail" placeholder="[email protected]" />
					<form:errors path="adresEmail" class="control-label" />
				</div>
			</div>
		</spring:bind>  
  
		<div class="form-group">
			<div class="col-sm-offset-2 col-sm-10">
				<c:choose>
					<c:when test="${ubezpieczenieSamochoduForm['new']}">
						<button  type="submit" class="btn-lg btn-primary pull-right" >Oblicz składkę</button>
					</c:when>
					<c:otherwise>
						<button type="submit" class="btn-lg btn-primary pull-right">Update</button>
					</c:otherwise>
				</c:choose>
			</div>
		</div>
	</form:form>

</div>



</body>
</html>

Konsola

2017-05-28 21:56:59 [http-nio-8080-exec-10] DEBUG c.m.f.w.UbezpieczenieSamochoduController - saveOrUpdateUbezpieczenieSamochodu() : UbezpieczenieSamochodu [id=null, rokProdukcji1994, markaAudi, model80, pojemnoscSilnikaod 0.9 do 1.2, wersjaNadwoziaSedan, sredniRocznyPrzebiegKm20001-40000, zakresUbezpieczeniaOC, plecnull, stanCywilnyKawaler/PannadataUrodzenia20-09-1994, rokWydaniaPrawaJazdy23, kierowcyPonizej26RokuZyciaNie, liczbaLatJazdyBezszkod2, liczbaSzkodOst5Lat0, telefon723485375, [email protected]]true
0

debug

0

Przejrzyj logi springa, w razie potrzeby z podwyższonym poziomem logowania. Tam musi być wyjaśnienie.

0

Problem rozwiązany, nie wykonywało się przekierowywanie ponieważ brakowało pola z "datą rozpoczęcia ubezpieczenia" w pliku .jsp . Dzięki za odpowiedzi. :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1