2012-03-18 2 views
0

я страница, которая показывает элемент через его ID: item.xhtml?id=xxxJSF ошибки и перенаправить

Если нет идентификатора не предоставляется список всех элементов отображается.

На этой же странице есть форма, используемая для обновления полей предмета. Использование <f:viewParam> и скрытый ввод Я могу показать item.xhtml?id=xxx еще раз, когда отправлю форму. Но если возникает ошибка проверки (я использую проверку Bean), элемент item.xhtml появляется со списком всех элементов и сообщением об ошибке. Есть ли способ перенаправления, даже если возникает ошибка?

PS: Почему jsf убирает запрос с URL-адресов? Я имею в виду, что такого рода проблемы не будут существовать, если действие с обработанной формой было /context/page.xhtml?query=string, а не только /context/page.xhtml. Где я ошибаюсь?

+0

Дубликат вопрос: [http://stackoverflow.com/q/6885887/620338](http://stackoverflow.com/q/6885887/620338) –

ответ

0

Поместите управляемый компонент в область видимости на @ViewScoped. Если по какой-то причине вам действительно нужен ваш bean-компонент для запроса, вам необходимо передать параметр на <f:param>.

<h:commandButton value="Submit" action="#{bean.submit}"> 
    <f:param name="paramName" value="#{param.paramName}" /> 
</h:commandButton> 

Что касается формы action URL, это по дизайну. Вы можете переопределить это, предоставив свою собственную реализацию ViewHandler, в которой вы соответствующим образом переопределяете метод getActionURL().

+0

с использованием в <ч: CommandButton> не работает – Alf

+0

@ Alf: Пожалуйста, опишите «не работает» более подробно. Он не поддерживается в JSF 1.x, но определенно поддерживается в JSF 2.x. – BalusC

+0

не работает, потому что при ошибке проверки отображается страница item.xhtml not item.xhtml? Id = xxx. Я попытался с помощью '@ ViewScoped'. Это работает, но я использую CDI. – Alf

Смежные вопросы