Комбинация JSP / сервлет / IE не передает детали формы при вводе - PullRequest
1 голос
/ 03 марта 2010

Использование IE 7, JDK 1.6 и Sun Web server 7.

Внутри jsp формы мы имеем:

<input type="text" name="id" maxlength="20" />
<input ... type="submit" name="send" value="Send"/>

т.е. текстовое поле и кнопка «Отправить» (называемая «Отправить»).

и сервлет имеет:

if (request.getParameter("send") != null && request.getParameter("send").trim().length() > 0) { ... }

Используя Fiddler и IE, мы можем видеть, что следующее отправляется, когда мы заполняем текстовое поле id и нажимаем Enter:

ID = 123456

Однако, используя Fiddler и IE, мы можем видеть, что при заполнении текстового поля id и нажатии кнопки «Отправить» отправляется следующее:

= 123456 идентификатор пользователя и отправить = Отправить

Конечным результатом является то, что нажатие клавиши Enter эффективно ничего не делает.

На других страницах jsp, например, у нас есть:

<input type="text" name="id" maxlength="20" />
<input ... type="submit" name="submitId" value="Submit"/>

и сервлет имеет:

if (request.getParameter("submitId") != null && request.getParameter("submitId").trim().length() > 0) { ... }

Используя Fiddler и IE, мы видим, что для обоих случаев отправляется следующее:

ID = 123456 & submitId = Submit

Так что нам кажется, что это поведение проявляется только в IE для форм, в которых кнопка «Отправить» не называется «Отправить»?

Повторный запуск тестов в Firefox 3.6 показывает, что поведение является правильным и одинаковым для обоих случаев.

Есть предложения по корректной работе IE?

(Примечание: я искал схожую проблему в SO, но вопросы, связанные с этим, в основном связаны с ASP!).

Ответы [ 2 ]

2 голосов
/ 03 марта 2010

Это действительно еще одна аномалия IE в случае форм только с одним полем ввода. Единственный надежный способ для этого - добавить второе поле ввода (!). Вы можете скрыть это с помощью CSS. Нет, type="hidden" не пойдет на работу.

<input type="text" name="id" maxlength="20" />
<input type="text" style="display: none;" />
<input type="submit" name="send" value="Send"/>
0 голосов
/ 03 марта 2010

Почему вы проверяете request.getParameter("submitId") в своем JSP, когда фактически submitId - это название вашей кнопки отправки?

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

Если вы хотите дифференцировать методы отправки по имени кнопки отправки, вы можете попробовать добавить «скрытое» свойство, используя input type="hidden".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...