Как создать скрытое поле javax.faces.ViewState без атрибутов 'id' и 'autocomplete' - PullRequest
8 голосов
/ 01 марта 2011

Это то, что у меня есть в выходном HTML-документе (создан JSF 2.0 / Mojarra 2.0.3):

<input type="hidden" name="javax.faces.ViewState" 
id="javax.faces.ViewState" value="4267906931114993858:-6309146738430577631"
autocomplete="off" />

Мой документ должен быть XHTML 1.1 совместимым, где атрибут autocomplete не соответствуетДействительный атрибут id дублируется во всех формах.Как поручить JSF производить все, строго совместимое с XHTML?

Ответы [ 5 ]

3 голосов
/ 20 января 2012

См.

 <context-param>
   <param-name>com.sun.faces.autoCompleteOffOnViewState</param-name>
   <param-value>false</param-value>
 </context-param>

 <context-param>
   <param-name>com.sun.faces.enableViewStateIdRendering</param-name>
   <param-value>false</param-value>
 </context-param>
2 голосов
/ 12 апреля 2011

Неуникальное использование, если идентификатор javax.faces.ViewState является ошибкой, которая, по-видимому, не будет исправлена ​​Oracle.Они закрыли эти билеты.Обходной путь отсутствует.

1 голос
/ 26 октября 2011

Существует решение этой проблемы, оно было создано в версии 1.2_14 JSF.Я думаю, что проблема связана с тем, как Firefox работает во время события сброса (тип ввода = сброс) в скрытых полях.Существует проблема, когда клиентский viewState, находящийся в скрытом поле, получает несогласованное состояние.Решение этой проблемы было строго отключено автозаполнением (и это не соответствует XHTML).Самое интересное, что до 1.2_14 почти все жили с этой потенциальной ошибкой.Таким образом, реализация JSF-RI (проект Mojarra) позволила разработчику отключить эту опцию с помощью параметра, который вы можете редактировать в своем файле web.xml, и это автозаполнение больше не будет печататься.

<context-param>
    <description>Put your description here :)</description>
    <param-name>com.sun.faces.autoCompleteOffOnViewState</param-name>
    <param-value>false</param-value>
</context-param>

Этодействительно трудно создать действительные страницы XHTML с компонентными структурами, такими как JSF, но по крайней мере решение этой проблемы существует.

1 голос
/ 01 марта 2011

Как поручить JSF производить все строго соответствует XHTML

Это не вопрос "инструктирования" реализации JSF с простым флагом. Это то, что должно постоянно проверяться и, следовательно, возможно, только когда это считается важным для проекта. Строгое XHTML накладывает множество ограничений и, вероятно, поэтому, как правило, не считается заслуживающим поддержки - см. эту ошибку . Также обратите внимание, что любая библиотека компонентов, которую вы используете , также должна поддерживать ее.

Вам будет намного больше везения с XHTML 1.0 Transitional - я могу подтвердить, что MyFaces действительно создает действительный XHTML 1.0 Transitional (как только вы установите для параметра контекста org.apache.myfaces.RENDER_VIEWSTATE_ID значение false).

0 голосов
/ 13 февраля 2015

Не рекомендуется отключать autocomplete="off" для скрытых полей ввода ViewState, потому что тогда Firefox не обновляет ViewState-Id при обновлении страницы. Это вызывает непригодные формы и функциональные возможности JSF.

Подробнее см. в этом сообщении.

...