Тип ввода «скрытый» против текстовой области - PullRequest
0 голосов
/ 11 июня 2009

У меня странная проблема со скрытым типом ввода, и мне было интересно, видел ли кто-нибудь что-то подобное раньше. Я сохраняю около 2 МБ данных в скрытом поле в формате, разделенном запятыми, затем отправляю эти данные в jsp, который просто устанавливает некоторые заголовки (чтобы вывод распознавался как файл Excel), а затем отображает данные .

Я вижу, что переменная, в которой хранятся эти данные, становится пустой на стороне jsp, хотя я вижу, что она отправляется на сервер (я вижу это с помощью сниффера HTTP), и все данные, кажется, содержатся правильно в скрытом поле (я вижу это с firebug). Однако, если я изменю тип объекта на текстовую область, данные будут получены правильно на стороне сервера.

Еще одна странная вещь, которую я наблюдаю, заключается в том, что, если я использую кодировку URL для данных, даже используя текстовую область, на сервер ничего не попадает. Если я не использую URL-кодировку, но у меня есть скрытое поле, в поле ничего не сохраняется (оно пустое, когда я проверяю его с помощью firebug). Я тоже этого не понимаю ...

Мне интересно, есть ли какие-либо специальные настройки безопасности, которые не позволяют скрытым полям отправлять большие объемы данных на веб-сервер Tomcat. Кто-нибудь знает что-нибудь об этом?

Если это имеет какое-то значение, я использую в форме enctype по умолчанию (application / x-www-form-urlencoded)

В настоящее время я использую текст и устанавливаю стиль для видимости «скрытый», но меня беспокоит, что я не понимаю, что происходит * вздох ... Любое предложение приветствуется

Ответы [ 2 ]

4 голосов
/ 11 июня 2009

Я думаю, что иметь 2 МБ данных в скрытом поле - ошибка, несмотря на это. Вы должны хранить такие вещи на сервере как часть состояния сеанса, а не отправлять их туда и обратно между сервером и пользователем, как вы это делаете. Вместо этого используйте скрытое поле или файл cookie для переменной сеанса *, которая будет использоваться для поиска 2 МБ данных.

* Не делай этого вручную. Помимо всего прочего, JSP уже поддерживает состояние сеанса.

0 голосов
/ 11 июня 2009

Сервер не может определить разницу между текстовой областью и текстовым полем. Все элементы формы просто публикуются в виде пар имя / значение.

Скорее всего, где-то в ваших данных есть двойная кавычка, которая завершает атрибут value скрытого элемента ввода. Например:

<input type="hidden" value="Double " quote" />

Вам нужно избежать двойных кавычек, заменив их на &quot;

<input type="hidden" value="Double &quot; quote" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...