Jedyny sposób poza JS to ustawienie target="_blank"
w rodzicu <h:form>
.
<h:form target="_blank">
...
<h:commandButton value="Open in new Window" />
</h:form>
to jednak wpływa wszystkie non-ajax działania, które są wykonywane w tej samej formie (!). Więc jeśli jesteś sprytny, uczyń akcję, która nie powinna otwierać w nowym oknie akcji ajaxowej. Jednak ajax to także JavaScript i wspomniałeś, że nie chcesz używać JS (mam nadzieję, że nie zszokuje Cię, gdy odkryjesz, że PrimeFaces jest w rzeczywistości pełen JavaScript).
Jeśli absolutnie potrzebujesz ograniczyć to do pojedynczej akcji, to naprawdę nie możesz obejść się, prosząc niewielką pomoc do JavaScript.
<h:form>
...
<h:commandButton value="Open in new Window" onclick="this.form.target='_blank'" />
</h:form>
musi być oknem? czy może to być nowa zakładka? – Damian
Nowa zakładka również jest w porządku. Po kliknięciu polecenia Przycisk Chcę otworzyć stronę w nowej karcie. – vr3w3c9
w commandLink, osiągasz to dodanie target = "_ blank", ale myślę, że nie ma sposobu, aby to zrobić w commandButton bez javascript – Damian