Проверка Struts 2 с использованием перехватчика хранилища сообщений
У меня есть действие, когда я пытаюсь войти в систему пользователя.
public class RegisteredUserAction extends ActionSupport implements SessionAware {
..
..
public String login() throws Exception {
DBLogic dBLogic = new DBLogic();
RegisteredUser user = null;
try {
user = dBLogic.getRegisteredUser(getUserUsername(), getUserPassword());
} catch (CredentialException e) {
addFieldError("userUsername", e.getMessage());
addActionError(e.getMessage());
return INPUT;
}
if (user != null) {
session.put("user", user);
return SUCCESS;
}
return ERROR;
}
}
Как видите, если имя пользователя или пароль недействительны, я выбрасываю CredentialException, а затем заполняю это сообщение об исключениях в своей fieldError. Я даже попытался добавить ошибку действия.
С некоторыми советами и поиском в Интернете, мне удалось использовать Перехватчик хранилища сообщений, используя аннотации в RegisteredUserAction.action и MainAction.action соответственно для хранения и выборки.
import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.InterceptorRefs;
@InterceptorRefs({
@InterceptorRef(value = "store", params = {"operationMode", "STORE"}),
@InterceptorRef("defaultStack"),})
А ТАКЖЕ
import org.apache.struts2.convention.annotation.InterceptorRefs;
@InterceptorRefs({
@InterceptorRef(value = "store", params = {"operationMode", "RETRIEVE"}),
@InterceptorRef("defaultStack"),})
Это содержимое файла struts.xml, которое имеет отношение к делу:
/WEB-INF/template/page.jsp
/WEB-INF/template/page.jsp
loginPage.action
homePage.action
Я использую шаблонный подход, при котором содержимое Middle (в моем случае LoginPage.jsp) динамически включается в главную страницу.
Мой page.jsp (который включает в себя mainContent):
Мой login.jsp (который включается):
Error:
Перенаправление работает правильно, и форма входа появляется, но без ошибок. Я'Мы даже безуспешно пытались использовать перехватчик Message Store в struts.xml. :(