Проверка формы 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, который вы не видите, потому что
- ваш результат INPUT попадает на пустую страницу и
- ты используешь
theme="simple"
в текстовом поле, которое заставляет вас добавлять<s:fielderror fieldName="dataSource" />
показать это (или<s:fielderror />
показать им все).
Прочитайте, как работает результат INPUT, установите свою страницу как страницу INPUT, распечатайте ошибки, и вы обнаружите проблему, которая, скорее всего, связана с тем, что вы не указали listKey
атрибут в вашем выборе, который отправляет описание вместо кода источника данных в selectedDataSource
, который, вероятно, является целым числом.