Проверка формы XML в Struts 2 прерывается при добавлении нового элемента, который не нуждается в проверке

Я столкнулся с проблемой, которую действительно сложно отладить. У меня есть страница JSP, на которой есть некоторые элементы формы, которые отправляются в действие Struts2. У меня также есть файл проверки формы XML, чтобы выполнить некоторую проверку представленных полей. Файл имеет соглашение об именах 'actionName-validation.xml'

Это работает нормально, но когда я добавляю выпадающий список вне формы, проверка теперь завершается неудачей. Вместо этого он перенаправляет на пустую страницу, и моя точка останова в моем классе действий не достигнута.

Есть ли способ включить отладку или запись в журнал для проверки? Почему при добавлении тега за пределы формы это может произойти?

Вот код на странице JSP:

<s:select id="dataSource" name="selectedDataSource" theme="simple" listValue="top" 
   headerKey="" headerValue="Choose Data" list="dataSources" size="1" />

<div id="forms">
    <s:form method="post" action="MyAction" theme="simple">
      <p>
          <label class="input" for="name"
          <span style="color:red;">*</span>
          <span>Name</span><br>
          <s:textfield theme="simple" name="name" maxlength="11" size="11" />
          <br>
          <s:fielderror theme="plain"><s:param value="'name'" /</s:fielderror></label>

      </p>    
      <s:submit value="Create New" theme="simple" cssStyle="display: block; clear: left;"/>

    </s:form>
</div>

Если я удалю <s:select> тег, это работает.

Любая помощь будет принята с благодарностью.

EDIT2: я нашел проблему. Мне нужен был метод get для списка, который используется для заполнения выпадающего списка внутри действия, которое отправляет форма.

У меня был один для действия, которое первоначально вызывается для страницы, но когда проверка завершается неудачно и она перезагружает эту страницу из класса действия формы, она пытается заново заполнить выпадающий список выбора и нуждается в получателе. Я чувствую себя глупо, что не могу найти это раньше. Было бы неплохо, если бы был какой-то тип регистрации или обмена сообщениями этих типов проблем.

Благодарю.

2 ответа

Решение

Я нашел проблему. Мне нужен был метод get для списка, который используется для заполнения выпадающего списка внутри действия, которое отправляет форма.

У меня был один для действия, которое первоначально вызывается для страницы, но когда проверка завершается неудачно и она перезагружает эту страницу из класса действия формы, она пытается заново заполнить выпадающий список выбора и нуждается в получателе. Я чувствую себя глупо, что не могу найти это раньше. Было бы неплохо, если бы был какой-то тип регистрации или обмена сообщениями этих типов проблем.

Ошибка, с которой вы сталкиваетесь, не является ошибкой проверки (обрабатывается перехватчиком проверки), но произошла ошибка при настройке параметров (возбуждается перехватчиком параметров) и для которой перехватчик ошибок преобразования добавил fieldError, который вы не видите, потому что

  1. ваш результат INPUT попадает на пустую страницу и
  2. ты используешь theme="simple" в текстовом поле, которое заставляет вас добавлять <s:fielderror fieldName="dataSource" /> показать это (или <s:fielderror /> показать им все).

Прочитайте, как работает результат INPUT, установите свою страницу как страницу INPUT, распечатайте ошибки, и вы обнаружите проблему, которая, скорее всего, связана с тем, что вы не указали listKey атрибут в вашем выборе, который отправляет описание вместо кода источника данных в selectedDataSource, который, вероятно, является целым числом.

Другие вопросы по тегам