Как отключить ViewState?
Я вхожу в мир Java из MS и ASP.NET и ищет аналогичную компонентную HTML-структуру ASP.NET на Java. После просмотра тонны ссылок в Интернете, похоже, что JSF2 (с facelets) лучше всего подходит (это правда кстати? Или есть другие лучшие варианты?).
Проблема, с которой я сейчас сталкиваюсь во время оценки, - правильное использование состояния представления JSF. Моим окончательным сценарием использования будет кластеризованный WEB-сервер, и я НЕ собираюсь иметь какие-либо объекты, связанные с сеансом/сервером, и я НЕ собираюсь использовать пропускную способность сети для фиктивного состояния представления (см. Другой вопрос, связанный с несколькими людьми здесь Настройка JSF).
Я взял некоторый учебник JSF2 и после установки javax.faces.STATE_SAVING_METHOD = клиент получил ViewState, сгенерированный в HTML из 440 символов (omygod, страница содержит только 1 фиктивный ввод текста и 1 кнопку отправки). В "POST on submit" мне нужен только текст с текстового ввода (10 символов), а не состояние фиктивного представления (440 символов).
Итак, вопрос: Можно ли отключить состояние просмотра в JSF2?
Соответствующие ссылки:
Обновление: релевантные ссылки (из комментариев ниже):
Ответы
Ответ 1
JSF - это основа, основанная на компонентах, которая сильно зависит от состояния - поэтому вам нужно состояние где-то, отправленное клиенту по проводке и отправленное снова или на стороне сервера. Поэтому AFAIK ответ "Нет", вы не можете отключить состояние "Просмотр". Но вы можете свести его к минимуму, но какое-то состояние всегда нужно хранить. Эта ссылка имеет значение.
Если вы ищете веб-инфраструктуру Java, которая не настолько устойчива к состоянию, то, возможно, посмотрите на некоторые основанные на Action фреймворки, такие как Struts или Stripes, поэтому вы можете работать в области запроса и не нуждаться в дереве компонентов (или перестроенном) на обратной передаче. Рамка Play набирает хорошую прессу, которая специально предназначена для таргетинга на архитектуры RESTful. У меня нет опыта в этом, но вы можете исследовать его. С сайта Play:
Простая архитектура MVC без состояния
У вас есть база данных с одной стороны и веб-браузер с другой. Зачем если у вас есть состояние между ними?
Полноценные и основанные на компонентах Java Web-структуры упрощают автоматически сохранять состояние страницы, но это приносит много других проблемы: что произойдет, если пользователь откроет второе окно? Что, если пользователь нажимает кнопку "Назад" браузера?
Ответ 2
Так как Mojarra 2.1.19 и Mojarra 2.2.0-m10 можно отключить сохранение состояния для каждого представления, установив атрибут transient
<f:view>
на true
.
<f:view transient="true">
...
<h:form>
...
</h:form>
...
</f:view>
См. также: