Используйте EL для динамического определения файла CSS, вот пример, который проверяет наличие параметра запроса print
(таким образом, <h:outputLink value="page.jsf?print" target="_blank">
будет достаточно):
<link rel="stylesheet" type="text/css" href="${not empty param.print ? 'print.css' : 'normal.css'}" />
Вы также можете получить его как свойство бина обычным способом JSF:
<link rel="stylesheet" type="text/css" href="<h:outputText value="#{bean.cssFile}" /> " />
Если вы используете Facelets вместо JSP, то вы также можете использовать унифицированный EL в тексте шаблона:
<link rel="stylesheet" type="text/css" href="#{bean.cssFile}" />
Если вам на самом деле не нужна вкладка / страница «Предварительный просмотр», тогда вы можете просто указать атрибут media
в CSS link
и позволить ссылке / кнопке вызывать window.print()
во время onclick
вместо открытия в новой вкладке.
<link rel="stylesheet" type="text/css" href="normal.css" media="screen, handheld, projection" />
<link rel="stylesheet" type="text/css" href="print.css" media="print" />
Когда страница собирается быть напечатанной, вместо нее будет автоматически использована страница, указанная media="print"
.