Откройте ссылку в новой вкладке/окне без потери области просмотра текущей страницы JSF.

Мне нужно открыть новую страницу JSF (скажем, 2.xhtml) в новой вкладке с текущей страницы JSF (скажем, 1.xhtml). Какой компонент JSF я должен использовать для этого? <h:commandLink> или <h:outputLink>?

Я не хочу терять область действия текущей страницы 1.xhtml после нажатия на ссылку, чтобы открыть 2.xhtml в новой вкладке.

Фасоль 1.xhtml - это @ViewScoped. Должен ли я изменить его на @RequestScoped?


person Shivagoy    schedule 24.01.2014    source источник


Ответы (1)


В HTML ссылка, которая открывает данный URL-адрес в новом окне/вкладке с помощью запроса GET, должна быть получена с использованием <a ... target="_blank">.

В JSF вы можете просто написать простой ванильный HTML:

<a href="#{request.contextPath}/2.xhtml" target="_blank">Open 2.xhtml in new window</a>

Вы также можете использовать <h:outputLink>, что полезно только в том случае, если вы когда-нибудь захотите использовать его атрибут rendered:

<h:outputLink value="#{request.contextPath}/2.xhtml" target="_blank">Open 2.xhtml in new window/h:outputLink>

Вы также можете использовать <h:link>, который может принимать результат навигации вместо URL-адреса, тогда JSF сгенерирует правильный URL-адрес:

<h:link value="Open 2.xhtml in new window" outcome="2" target="_blank" />

Область действия bean-компонента не имеет отношения ко всему этому. Просто выберите правильный для данных, которые он содержит. <h:commandLink> не подходит, поскольку он запускает запрос POST вместо запроса GET.

Смотрите также:

person BalusC    schedule 24.01.2014