Основное обновление: из-за Spring валидатор вызывается до вызова onSubmit.Когда никакие переключатели не выбраны, это работает нормально.Когда выбран переключатель, данные POST содержат переменную для переключателя, и это вызывает исключение NestedServletException.
Эта переменная не связана ни с каким свойством или классом.Есть ли «правильный» способ обработки такой переменной, либо внутри JSP, либо внутри моего кода?
У меня есть страница JSP, подключенная к Spring, где прослушиватель onSubmit отсутствуетболее долго вызывается после того, как я добавлю несколько переключателей на страницу JSP.Без переключателей голая версия страницы выглядит следующим образом.
<form:form>
<fieldset>
<input type="submit" value="Submit"/>
</fieldset>
</form:form>
Это работает, как и ожидалось.Мой отладчик достигает точки останова для onSubmit после нажатия кнопки отправки.Затем я добавляю следующий код для переключателей, который можно увидеть ниже.
<form:form>
<fieldset>
<input type="submit" value="Submit"/>
</fieldset>
<fieldset class="contentHalfFieldset"><legend>NID</legend>
<input type="radio" name="someName" value="value1" />
<input type="radio" name="someName" value="value2" />
<input type="radio" name="someName" value="value3" />
</fieldset>
</form:form>
Теперь, , когда я не выбираю какую-либо кнопку переключателя, кнопка отправки по-прежнему вызывает достижение события отправкиточка останова в методе onSubmit .Это все еще работает как задумано.Однако, когда я выбираю одну из переключателей и затем нажимаю кнопку отправки, страница просто обновляется.
Почему это так?Что происходит, что заставляет кнопки ввода препятствовать обработке отправки?
------- Сгенерированный HTML -------
<form id="cmd" method="post" action="/page/pageAction.html?param=k" onsubmit="disableSubmit(this);">
<fieldset class="contentHalfFieldset"><legend>NID</legend>
<label class="labelClass">First radio button:</label>
<input type="radio" name="nidStatus" value="first" /><br style="clear: both"/>
<label class="labelClass">Second radion button:</label>
<input type="radio" name="nidStatus" value="second" /><br style="clear: both"/>
<label class="labelClass">Third radio button</label>
<input type="radio" name="nidStatus" value="third" /><br style="clear: both"/>
</fieldset>
</form>
------- Больше запрашиваемого кода -------
Это метод disableSubmit (..).
function disableSubmit(parentElement) {
elements = parentElement.elements;
for(var i = 0; i < elements.length; i++) {
var element = elements[i];
if(element.type == "submit") {
element.disabled=true;
element.value="Please Wait...";
}
}
};