Я запускаю базовое приложение Struts2, в котором у меня возникает одна путаница. Мой класс действий реализует интерфейсы Readyable и ModelDriven и расширяет класс ActionSupport. У компонента модели есть одно свойство с именем «Пользователь».разница в значении свойства, полученном в валидаторе и методе модели в Struts2
На моей домашней странице (jsp) есть одно поле ввода, соответствующее единственному свойству «Пользователь» из модельного компонента.
В методе prepare() Я инициализирую компонент и установив его свойство в значение по умолчанию, например «Test», и метод model() возвращает этот объект bean.
В validate() у меня есть проверка, что если свойство «Пользователь» компонента bean имеет значение равно «Test», то addFieldError else continue.
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
, но если я ввести любое значение сказать «Стек» в в поле формы и отправьте форму, тогда метод проверки распечатает значение, которое пользователь вводит, когда модельный метод печатает то, что подготовил инициализированный.
inside getModel..Test
inside getModel..Test
inside validate...Stack
Почему так? Почему оба метода не синхронизированы? Используют ли метод проверки и метод модели значение свойства из разных мест?
Спасибо.
Я пропустил заказ, в котором работают перехватчики. Благодарю. – Infotechie
@Infotechie Он имеет тот же порядок, что и в файле конфигурации сверху вниз. Посмотрите на тег 'interceptor-stack'. –