Как и для любого другого обычного элемента <input>
, пара name-value
<input type="button">
будет отправлена в качестве параметра запроса.
Главное предостережение заключается в том, что элементы <input type="button">
и <button>
не работают должным образом в MSIE. Во всех версиях MSIE атрибут value
элемента кнопки не будет отправлен в качестве значения параметра, но вместо этого будет отправлено его тело (содержимое тега)!
Кроме того, в IE6 есть еще одна удивительная ошибка: будет отправлена не только пара «имя-значение» нажатой кнопки, но и любая другая не нажатая кнопка в форме! Таким образом, вы вообще не сможете различить нажатую кнопку на стороне сервера.
Решение, которое работает в сочетании со всеми браузерами, состоит в том, чтобы использовать <input type="submit">
и дать им другое имя (или одно и то же имя, но другое значение).
* 1016 Е.Г. *
<input type="submit" name="validate" value="Validate">
<input type="submit" name="download" value="Download">
<input type="submit" name="submit" value="Submit">
в сочетании с
if (request.getParameter("validate") != null) {
// Validate button pressed.
} else if (request.getParameter("download") != null) {
// Download button pressed.
} else if (request.getParameter("submit") != null) {
// Submit button pressed.
}
или
<input type="submit" name="action" value="Validate">
<input type="submit" name="action" value="Download">
<input type="submit" name="action" value="Submit">
в сочетании с
String action = request.getParameter("action");
if ("Validate".equals(action)) {
// Validate button pressed.
} else if ("Download".equals(action)) {
// Download button pressed.
} else if ("Submit".equals(action)) {
// Submit button pressed.
}
Последний способ предоставляет больше возможностей абстрагироваться друг от друга на уровне Java.
Кстати, я, конечно, предполагаю, что вы уже используете Apache Commons FileUpload для обработки данных многокомпонентной формы, при необходимости с помощью фильтра , который возвращает данные многочастной формы обратно в карте параметров запроса , иначе вы ничего не получите от HttpServletRequest#getParameter()
.