Параметр формы равен нулю с Thymeleaf и Spring MVC

У меня проблема с Thymeleaf и Spring MVC.

Я следую учебнику с сайта spring.iohttp://spring.io/guides/gs/handling-form-submission/ и когда я попытался расширить этот учебник, я столкнулся с проблемой.

Если я добавлю другой параметр в свой класс модели (в моем примере я добавил параметр Date и длинный параметр), а не добавлю их в мое представление (просто представьте, что этот параметр даты является моей последней датой изменения, а этот длинный параметр) является случайным значением), когда я отправляю это значение, в моем методе эти 2 параметра становятся недействительными.

Вот некоторые из моего кода.

Моя модель класс

public class Greeting {

    private long id;
    private String content;
    private Date hour;
    private long longNumber;
.... getters and setters ....
}

Мой контроллер

@Controller
public class GreetingController {

@RequestMapping(value="/greeting", method=RequestMethod.GET)
public String greetingForm(Model model) {

    Greeting greeting = new Greeting();
    greeting.setHour(new Date());
    greeting.setLongNumber(1234L);
    System.out.println(greeting.toString());
    model.addAttribute("greeting", greeting);
    return "greeting";
}

@RequestMapping(value="/greeting", method=RequestMethod.POST)
public String greetingSubmit(@ModelAttribute Greeting greeting, Model model) {
    System.out.println(greeting.toString());
    model.addAttribute("greeting", greeting);
    return "result";
}
}

Моя форма

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Getting Started: Handing Form Submission</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
    <h1>Form</h1>
    <form action="#" th:action="@{/greeting}" th:object="${greeting}" method="post">
        <p>Id: <input type="text" th:field="*{id}" /></p>
        <p>Message: <input type="text" th:field="*{content}" /></p>
        <p><input type="submit" value="Submit" /> <input type="reset" value="Reset" /></p>
    </form>
</body>
</html>

Страница результатов

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Getting Started: Handing Form Submission</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
    <h1>Result</h1>
    <p th:text="'id: ' + ${greeting.id}" />
    <p th:text="'content: ' + ${greeting.content}" />
    <p th:text="'Date: ' + ${greeting.hour}" />
    <a href="/greeting">Submit another message</a>
</body>
</html>

Это мои отпечатки консоли моего модельного класса

Greeting [id=0, content=null, hour=Sun Apr 26 22:29:25 GMT-03:00 2015, longNumber=1234]
Greeting [id=0, content=aaaa, hour=null, longNumber=0]

Как вы можете видеть, оба моих параметра, которых нет у меня, становятся нулевыми после записи (вторая строка) и в первой строке они имеют значения. Я не понимаю почему, потому что я пришел из другого хорошего фреймворка (JSF), и у меня нет такой проблемы там. Просто чтобы знать, я использую Spring 4, как в учебнике, и почему у меня есть параметр, который не на мой взгляд? Поскольку некоторые из этих параметров будут содержать некоторые данные, такие как дата последнего обновления регистра, последний пользователь, который обновил регистр, и идентификатор моего приложения.

Может ли кто-нибудь помочь мне найти ответ на этот вопрос?

Редактировать:

После некоторого времени и экспериментов я нашел решение своей проблемы. Следуйте моему куску кода, который работает так, как это должно было быть:

@Controller
@SessionAttributes({"obj"})
public class MyController {

    @RequestMapping(value = "/path", method = RequestMethod.GET)
    public ModelAndView myGet() {       
        ModelAndView modelAndView = new ModelAndView("view");
        MyClass object = new MyClass();
        modelAndView.addObject("obj", object );     
        return modelAndView;
    }

    @RequestMapping(value = "/path", method = RequestMethod.POST)
    public ModelAndView myPost(@ModelAttribute("obj") @Validated MyClass object, BindingResult result){

        ModelAndView modelAndView = new ModelAndView("view");       
        if(result.hasErrors())
            modelAndView.addObject("obj",object);
        else 
            service.save(object);
        return modelAndView;
    }   
}

Ответы на вопрос(1)

Ваш ответ на вопрос