Учебное пособие или пример <html:errors> по Struts
-
06-09-2019 - |
Вопрос
Я пытаюсь создать страницу входа в Struts.Идея состоит в том, чтобы проверить, существует ли пользователь и т. д., а затем, если есть ошибка, вернуться на страницу входа с ошибками, выделенными красным (типичный вход в систему или проверка любой страницы формы).
Я хотел бы знать, знает ли кто-нибудь учебник по управлению ошибками в Struts.Я специально ищу учебник (или пример)
<html:errors>
тег, который, я думаю, решит мою проблему.
Решение
Вот краткое резюме.У вас есть ActionForm
класс, скажи MyForm
:
<form-bean name="myForm" type="myapp.forms.MyForm"/>
У вас есть Action
класс, скажи MyAction
:
<action path="/insert" type="myapp.actions.MyAction" name="myForm"
input="/insert.jsp" validate="true" />
<forward name="success" path="/insertDone.jsp"/>
</action>
«имя» в действии относится к «имени» в компоненте формы.Потому что у тебя есть validate="true"
твой ActionForm
сорт MyForm
должен определить validate()
метод, который будет автоматически вызван:
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
if ((username==null) || (username.length() < 1))
errors.add("username", new ActionError("error.username.required"));
return errors;
}
Если он возвращает пустой объект ActionErrors, Struts продолжает вызывать MyAction.execute().В противном случае Struts отображает /insert.jsp (поскольку это указанный вами параметр input=) и расширяет тег html.errors для отображения ошибок из ActionErrors.
Другие советы
Вот один://struts.apache.org/1.3.5/struts-taglib/apidocs/org/apache/struts/taglib/html/package-summary.html#package_description
Здесь я предполагаю Struts 1.Я не знаю, изменилось ли это для Struts 2.
Вы можете поместить error.header и error.footer в файл ресурсов сообщения:
errors.header=<h3><font color="red">Errors:</font></h3><ul>
errors.footer=</ul>
Верхний и нижний колонтитулы отображаются только в том случае, если в объекте ActionErrors есть какие-либо ошибки.
В своем классе Action сделайте следующее:
ActionErrors errors = new ActionErrors();
if (badInput) {
errors.add(ActionErrors.GLOBAL_ERROR,
new ActionError("error.bad.input", badString); // key in messages resource file
// badString will replace {0} in message
}
Затем, прежде чем вернуться:
saveErrors(request, errors);
В файле ресурсов ваших сообщений:
error.bad.input=<li>Bad input: '{0}' is invalid.</li>
Теперь, когда <html:errors/>
тег обработан, он превратится в:
<h3><font color="red">Errors:</font></h3><ul>
<li>Bad input: 'xxyyzzz' is invalid.<li>
</ul>
В действии стойки:
ActionErrors errors = new ActionErrors();
errors.add("", new ActionMessage("login.msg.err"));
saveErrors(request, errors);
«hello.msg.err» определен в MessageBundle.properties.
login.msg.err=Wrong user name or password
В вашем JSP ошибка будет отображаться тегом h:errors:
<h:errors/>
Это видео покажет вам шаг за шагом и объяснит все эти вещи:https://youtu.be/YcCsJtqI72A