Откройте JSP в новом браузере из кода сервера - PullRequest
2 голосов
/ 29 августа 2011

Можно ли открыть ресурс в новой вкладке браузера (например, target = "_ newtab" для командных кнопок) из кода jsf на стороне сервера?

Следующий код открывает ресурс в той же вкладке:

FacesContext.getCurrentInstance().getExternalContext().redirect("resource.jsp"); 

Я использую простые лица. Я думаю, что есть возможность с javascript и icefaces.

Ответы [ 3 ]

4 голосов
/ 29 августа 2011

Вы не можете контролировать это на стороне сервера. Вы должны контролировать это на стороне клиента. Например, командная кнопка, вызывающая действие компонента, должна иметь target="_blank" в родительском элементе <h:form>.

<h:form target="_blank">
    <h:commandButton value="Submit" action="#{bean.submit}" />
</h:form>

Или, если вы не выполняете никаких постобработок в методе action, просто замените эту кнопку на обычную ссылку.

<a href="resource.jsp" target="_blank">link</a>
3 голосов
/ 30 августа 2011

Лучшее решение, которое я нашел, было:

RequestContext context = RequestContext.getCurrentInstance();
context.execute("window.open('resource.jsp', '_newtab')");
0 голосов
/ 11 февраля 2014

Это сработало для меня на Icefaces:

JavascriptContext.addJavascriptCall(FacesContext.getCurrentInstance(), "window.open(dir, '_newtab');");

, где dir - направление новой вкладки.

...