Мне нужно открыть страницу JSF в новом окне POST при щелчке <h:commandButton>
. Я знаю, что могу добиться этого, используя JavaScript. Но я хотел бы добиться этого, используя JSF, а не JavaScript.
Как я могу это достичь? Я использую JSF 2.0.
Мне нужно открыть страницу JSF в новом окне POST при щелчке <h:commandButton>
. Я знаю, что могу добиться этого, используя JavaScript. Но я хотел бы добиться этого, используя JSF, а не JavaScript.
Как я могу это достичь? Я использую JSF 2.0.
Единственным способом, отличным от JS, является установка target="_blank"
в родительском <h:form>
.
<h:form target="_blank">
...
<h:commandButton value="Open in new Window" />
</h:form>
Это, однако, влияет на все действия, отличные от ajax (!), которые выполняются в той же форме. Поэтому, если вы умны, сделайте действие, которое не должно открывать в новом окне действие ajax. Тем не менее, ajax также является JavaScript, и вы упомянули, что не хотите использовать JS (надеюсь, вы не будете потрясены, если обнаружите, что PrimeFaces на самом деле заполнен JavaScript).
Если вам абсолютно необходимо ограничить его одним действием, вы действительно не сможете обойтись без помощи JavaScript.
<h:form>
...
<h:commandButton value="Open in new Window" onclick="this.form.target='_blank'" />
</h:form>
Когда вы ограничиваете цель только одним действием, возможно, вы хотите получить форму в ее исходном состоянии. С помощью действия oncklick вы устанавливаете цель формы на страницу _blan. После щелчка страница открывается на новой вкладке/странице (вызывает событие действия). Наконец, действие onblur запускается и снова устанавливает форму в исходное состояние (остальные кнопки откроются на странице _self) С помощью этого кода вы можете ограничить только команду h: commandbutton для открытия на новой странице. Остальные кнопки будут открываться на собственной странице:
<h:commandButton
onclick="this.form.target='_blank'"
onblur="this.form.target='_self'"
id="listadoRebuts"
action="#{giaquaBusquedaCorte.abrirListadoRebuts}"
value="#{msg.seqVisorbtnRecibos}">
</h:commandButton>