<html: errors> учебник или пример Struts - PullRequest
7 голосов
/ 02 июня 2009

Я пытаюсь сделать страницу входа в Struts. Идея состоит в том, чтобы проверить, существует ли пользователь и т. Д., А затем, если возникла ошибка, вернуться на страницу входа с ошибками красного цвета (типичный вход в систему или проверка страницы формы).

Я хотел бы знать, знает ли кто-нибудь учебник по управлению ошибками в Struts. Я специально ищу учебник (или пример)

<html:errors>

тег, который, я думаю, решит мою проблему.

Ответы [ 3 ]

16 голосов
/ 02 июня 2009

Вот один из них: //struts.apache.org/1.3.5/struts-taglib/apidocs/org/apache/struts/taglib/html/package-summary.html#package_description

Здесь я предполагаю, что Struts 1. Я не знаю, изменился ли он для Struts 2.

Вы можете поместить в файл ресурсов сообщения ошибки .header и errors.footer:

errors.header=<h3><font color="red">Errors:</font></h3><ul>
errors.footer=</ul>

Верхний и нижний колонтитулы отображаются, только если в объекте ActionErrors есть ошибки.

В вашем классе действий сделайте следующее:

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>
10 голосов
/ 04 июня 2009

Вот краткое резюме. У вас есть 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>

«имя» в действии относится к «имени» в форме bean-компонента. Поскольку у вас есть 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 = parm) и раскрывает тег html.errors для отображения ваших ошибок из ActionErrors.

0 голосов
/ 12 мая 2019

В стойках действие:

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

...