Определение того, какая кнопка отправки была использована?

Можно ли определить, какая кнопка отправки была использована? У меня есть форма подтверждения с двумя кнопками отправки. Первый подтвердит заказ, выполнит некоторые задачи БД, а затем перенаправит. Вторая, кнопка «Отмена», просто перенаправит на ту же страницу, не выполняя никаких задач БД.

Возможно ли в сервлете, предпочтительно через объект запроса, определить, какая кнопка отправки была использована? Я бы предпочел не зависеть от Javascript, так как это довольно просто, но прибегну к нему, если это единственная возможность.

Спасибо.


person Chris Serra    schedule 21.01.2009    source источник


Ответы (4)


<button name="someName" value="someValue" type="submit">Submit</button>
<button name="otherName" value="otherValue" type="submit">Cancel</button>

Вы будете иметь someName=someValue или otherName=otherValue в данных вашего запроса

person Quassnoi    schedule 21.01.2009
comment
Спасибо. Думал, что так и будет, но подумал, что спрошу заранее. - person Chris Serra; 21.01.2009
comment
Если вы уже думали, что это так, я не знаю, почему вы не настроили его, не запустили и не проверили результаты? Кажется, что задавать вопрос, на который вы, вероятно, уже знаете ответ, — пустая трата времени. - person abelenky; 21.01.2009
comment
Я не думаю, что напрасно надеяться, что есть более чистый способ сделать что-то. - person Kev; 16.10.2009

Конечно, просто дайте каждой из ваших кнопок submit атрибут name, и какая бы из них ни была нажата, она появится в отправленных переменных:

<input type="submit" name="doConfirm" value="Confirm"  />
<input type="submit" name="doCancel"  value="Cancel"  />
person Alnitak    schedule 21.01.2009

Как уже упоминалось, наличие двух кнопок с разными именами поможет вам достичь своей цели. Однако есть некоторые потенциальные проблемы, о которых следует знать, полагаясь на это в своем приложении. Я думаю, что они специфичны для Internet Explorer, поэтому, если вам не нужна поддержка более старых версий IE, вы можете их игнорировать. Оба связаны с поведением отправленной формы, когда пользователь нажимает клавишу ввода, когда фокус находится на одном из элементов формы. В В этой статье ASP используется для демонстрации проблемы, но HTML-сторона вещей актуальна.

person laz    schedule 21.01.2009

При использовании нескольких кнопок отправки мне нравится использовать javascript для установки значения скрытого поля формы, которое описывает действие, которое должно произойти.

Например:

<input type="hidden" name="action" id="form-action" />
<input type="submit" value="Save" onClick="document.getElementById('form-action').value='save'" />
<input type="submit" value="Copy" onClick="document.getElementById('form-action').value='copy'" />
person Clay    schedule 21.01.2009