Как отключить ViewState? - PullRequest
       17

Как отключить ViewState?

11 голосов
/ 30 января 2012

Я прихожу в мир Java из MS и ASP.NET и ищу похожую на ASP.NET компонентную HTML-инфраструктуру в Java.После просмотра множества ссылок в интернете кажется, что JSF2 (с фейслетами) лучше всего подходит (правда ли, кстати? Или есть другие лучшие варианты?).

Проблема, с которой я сталкиваюсь во время оценкитеперь правильно использовать состояние просмотра JSF.Моим последним сценарием использования будет кластеризованный веб-сервер, и я НЕ собираюсь иметь какие-либо сохраненные в сеансе / сервере объекты, и я НЕ собираюсь использовать пропускную способность сети для фиктивного состояния просмотра (см. Здесь некоторую проблему, связанную с другим парнем Настройка JSF ).

Я взял некоторый учебник по JSF2, и после установки javax.faces.STATE_SAVING_METHOD = клиент получил ViewState, сгенерированный в HTML из 440 символов (омигод, страница содержит только 1 ввод фиктивного текста и 1 кнопку отправки)).В «POST on submit» мне нужен только текст из текстового ввода (10 символов), а не это фиктивное состояние просмотра (440 символов).

Так что вопрос - Можно ли отключить состояние просмотрав JSF2?

Соответствующие ссылки:

Обновление: соответствующие ссылки (из комментариев ниже):

Ответы [ 2 ]

10 голосов
/ 30 января 2012

JSF - это основанная на компонентах инфраструктура с высокой степенью состояния, поэтому вам нужно где-то состояние, либо отправленное клиенту по проводам и отправленное снова, либо на стороне сервера.Так что AFAIK ответ «Нет», вы не можете отключить состояние просмотра.Но вы можете свести его к минимуму - однако какое-то состояние всегда будет нуждаться в хранении.Эта ссылка актуальна.

Если вы ищете веб-фреймворк Java, который не так насыщен состоянием - тогда, возможно, стоит взглянуть на какую-нибудь основанную на действии фреймворк, такую ​​как Struts или Stripes, чтобы вы могли работатьв области запроса и не нужно, чтобы дерево компонентов присутствовало (или перестраивалось) на обратной передаче.Платформа Play завоевала хорошую репутацию - она ​​специально предназначена для RESTful-архитектур.Я не имею опыта этого сам, но вы можете исследовать это.Взято с веб-сайта Play:

Простая архитектура MVC без сохранения состояния

С одной стороны у вас есть база данных, а с другой - веб-браузер.Почему у вас должно быть промежуточное состояние?

Веб-инфраструктуры Java с сохранением состояния и компонентами упрощают автоматическое сохранение состояния страницы, но это порождает множество других проблем: что произойдет, если пользователь откроет второе окно?Что если пользователь нажмет кнопку «Назад» в браузере?

8 голосов
/ 15 февраля 2013

Начиная с Mojarra 2.1.19 и Mojarra 2.2.0-m10, можно отключить сохранение состояния отдельно для каждого просмотра, установив для атрибута transient для <f:view> значение true.

<f:view transient="true">
    ...
    <h:form>
        ...
    </h:form>
    ...
</f:view>

Смотри также:

...