разница в значении свойства, полученного в методе validate и model в Struts2

Я использую базовое приложение Struts2, в котором у меня возникла путаница. Мой класс действий реализует интерфейсы Preparable и ModelDriven и расширяет класс ActionSupport. У компонента bean есть единственное свойство с именем «Пользователь».

Моя домашняя страница (jsp) имеет одно поле ввода, соответствующее единственному свойству «Пользователь» модельного компонента.

В методе prepare () я инициализирую компонент и устанавливаю для его свойства какое-то значение по умолчанию, скажем «Test», а метод model () возвращает этот объект компонента.

В validate () у меня есть проверка, что, если свойство "User" компонента имеет значение, равное "Test", тогда addFieldError еще продолжается.

public Student getModel() {
    System.out.println("inside getModel.."+ st.getName());      
    return st;
}

public void validate(){
    System.out.println("inside validate"+st.getName());
    if(st.getName().equals("Test")){
       addFieldError("name","blank field");
    }       
}

public void prepare() throws Exception {
    st = new Student();
    st.setName("Test");
}

Теперь мой вопрос: когда я обращаюсь к действию напрямую, возникает ошибка, и в консоли я получаю журналы ниже:

inside getModel..Test
inside getModel..Test
inside validate...Test

но если я введу какое-либо значение, скажем «Stack», в поле формы и отправлю форму, тогда метод validate напечатает значение, введенное пользователем, пока метод модели печатает то, что подготовил инициализацию.

inside getModel..Test
inside getModel..Test
inside validate...Stack

Почему так? Почему оба метода не синхронизированы? Метод validate и метод модели выбирают значение свойства из разных мест?

Благодарю.

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

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