różnica w wartości właściwości pobranej w walidacji i metodzie modelu w Struts2

Używam podstawowej aplikacji Struts2, w której mam jedno zamieszanie. Moja klasa akcji implementuje interfejsy Preparable i ModelDriven i rozszerza klasę ActionSupport. Model bean ma jedną właściwość o nazwie „User”.

Moja strona główna (jsp) ma jedno pole wejściowe odpowiadające tylko właściwości „Użytkownik” modelu fasoli.

W metodzie prepare () inicjalizuję komponent bean i ustawiając jego właściwość na wartość domyślną, powiedz „Test”, a metoda model () zwraca ten obiekt bean.

W validate () mam sprawdzanie poprawności, że jeśli właściwość „User” komponentu bean ma wartość równą „Test”, wtedy addFieldError postępuje dalej.

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");
}

Teraz moje pytanie brzmi: Kiedy uzyskuję dostęp do akcji bezpośrednio, pojawia się błąd, aw konsoli otrzymałem logi:

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

ale jeśli wprowadzę wartość „Stos” w polu formularza i prześlę formularz, to metoda sprawdzania poprawności wypisuje wartość wprowadzoną przez użytkownika, podczas gdy metoda modelu drukuje to, co zostało zainicjowane.

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

Dlaczego tak? Dlaczego obie metody nie są zsynchronizowane? Czy metoda sprawdzania poprawności i metoda modelu wybierają wartość właściwości z różnych lokalizacji?

Dzięki.

questionAnswers(1)

yourAnswerToTheQuestion