кнопка возврата в jsf

как реализовать кнопку «Назад» в качестве универсальной командной кнопки? с кнопкой «Назад» я имею в виду не кнопку браузера, а кнопку, которая находится где-то на странице. не всегда можно использовать шаблон Post-redirect-get.

совершенно непрактично передавать информацию о каждом месте, на которое должна указывать кнопка.

есть ли зарезервированное ключевое слово для правила навигации, которое указывает на последнее примененное правило навигации?


person Andreas Petersson    schedule 16.03.2009    source источник


Ответы (5)


В этом случае я использую h:commandLink с атрибутом onclick="history.go(-1)". Работает универсально.

person alexmeia    schedule 16.03.2009
comment
Надеялся, что это поможет мне, но, похоже, не работает с h: commandButton. :-( - person Brian Knoblauch; 14.09.2010
comment
Вам действительно нужно использовать для этого тег jsf? Если нет, попробуйте с ‹input type = button onclick = history.go (-1) /›. Это будет работать. - person alexmeia; 15.09.2010
comment
Кажется, обновляется текущая страница, которая больше не отображается, поэтому любые ManagedProperties будут получать исключения с нулевым указателем. Есть идеи, как это предотвратить? - person K.Nicholas; 18.12.2014
comment
Я использовал onclick="history.go(-1);return false;", чтобы предотвратить отправку исходной страницы. - person K.Nicholas; 18.12.2014
comment
У меня такая же проблема с исключениями нулевого указателя, когда я возвращаюсь в историю: / я передаю параметры своему bean-компоненту. : / onclick = history.go (-1); вернуть ложь; работает, чтобы вернуться, но когда я нажимаю на другую кнопку, jsf имеет эту ошибку: Вызвано: javax.el.PropertyNotFoundException: Target Unreachable, 'null' вернул null - person arxzel; 27.12.2018
comment
Я решаю свою проблему, используя кнопку h: на корневой странице, поэтому, когда я делаю «onclick = history.go (-1); return false;» у нас нет проблем с исключениями нулевого указателя, извините, если я пишу с плохой ортографией, но я говорю по-испански, мой английский плохой: D - person arxzel; 27.12.2018

Моя первая идея:

на каждом

<h:commandLink .....>

и так далее; сохранить строку навигации в bean-компоненте или даже в стеке, а затем кнопка возврата может получить ее и просто вернуть ее в соответствии с faces-config.xml

Вторая идея.

Но, подумав, вы должны переопределить или использовать фильтр, чтобы перехватить команды навигации и поместить их в стек. Тогда кнопка возврата может просто отключить навигацию и вперед.

person Martlark    schedule 16.03.2009

Ты можешь использовать:

<p:commandButton onclick="window.history.back();"/>

Эта инструкция делает то же самое, что onclick="history.go(-1)", что сказала алексмия.

person Erick Alves    schedule 16.08.2016
comment
Плохой способ использования commandButton. Либо используйте p:button, либо добавьте к нему кнопку type =. См. Документацию PrimeFaces для этого! - person Kukeltje; 16.08.2016

Я бы сохранил строку навигации в типе данных стека, и вы использовали stack.peek (), чтобы показать, какой сайт находится за вами, и при его нажатии вы запускаете событие действия, которое запускает stack.pop ()

person Chris Dale    schedule 16.03.2009

Я использовал кнопку «предыдущий» в представлении вкладок, и навигация работает плавно, просто используя

 <p:commandButton value="Previous" id="PreviousOffer" onclick="window.history.go(-1);return false;"/>

P.S. - Когда я не использовал return false; и нажал предыдущую кнопку, она остается только на текущей странице. Однако после добавления return false он заработал.

person Shweta Rajput    schedule 30.04.2020
comment
лучше добавить к нему type="button", тогда возвращать false не нужно - person Kukeltje; 30.04.2020