Как предотвратить инъекцию JSF2 скрытого javax.faces.ViewState

Как я могу запретить Mojarra, внедряя javax.faces.ViewState, скрытый в мои <form>s? У меня есть поиск <form method='GET'>, который работает в первый раз, когда моя страница загружается (поскольку мой bean-компонент с областью видимости повторно инициализируется правильно). Но после разбиения на страницы AJAX на странице (через сетку PrimeFaces) Mojarra (или PrimeFaces?) вводит скрытый javax.faces.ViewState в мою форму. Теперь, когда я отправляю форму, она не перезапускает мой компонент области просмотра из-за ввода javax.faces.ViewState.

Проблема здесь в следующем: я хочу, чтобы мой компонент поиска инициализировался и показывал результаты пользователю, но поскольку параметр ViewScope передается, ни этот компонент не инициализируется, ни связанная страница не отображается. Он просто остается на предыдущей странице.


person Mohsen    schedule 24.05.2012    source источник


Ответы (1)


Это делает не Мохарра, это делает PrimeFaces. Попробуйте вызвать <h:commandButton> с <f:ajax>, и вы увидите, что он обновляет только состояние просмотра формы, в которой изначально находится кнопка.

Вы можете сообщить об проблеме ребятам из PrimeFaces, которые они должны во время обновлений ajax не коснитесь любых <form> элементов, которые имеют method="get" и/или не имеют <input type="hidden" name="formId" value="formId">.

Пока они не исправят это, лучше всего удалить элемент при отправке простой HTML-формы.

<form onsubmit="form.removeChild(document.getElementById('javax.faces.ViewState'))">
person BalusC    schedule 24.05.2012
comment
Спасибо за ваш ответ, но я должен сказать, что JSF вставляет скрытый ввод ViewState в мой простой элемент ‹form›. Я использую Мохарру 2.1.7. - person Mohsen; 24.05.2012
comment
Я хочу, чтобы мой новый компонент был создан. Новый bean-компонент обрабатывает поиск, но ViewState, по-видимому, предотвращает создание bean-компонента. - person Mohsen; 25.05.2012
comment
Спасибо тебе за пояснение. Это меня тоже удивляет. Я обновил ответ. - person BalusC; 25.05.2012
comment
Я думал о подобном взломе Javascript. В любом случае спасибо. - person Mohsen; 25.05.2012