Utilisez EL pour spécifier le fichier CSS dynamiquement, voici un exemple qui vérifie la présence du paramètre de demande print
(donc, <h:outputLink value="page.jsf?print" target="_blank">
suffirait):
<link rel="stylesheet" type="text/css" href="${not empty param.print ? 'print.css' : 'normal.css'}" />
Vous pouvez également le récupérer comme proprerty de haricot la comme d'habitude JSF:
<link rel="stylesheet" type="text/css" href="<h:outputText value="#{bean.cssFile}" /> " />
Si vous êtes sur Facelets au lieu de JSP, vous pouvez également utiliser EL unifié dans le texte du modèle:
<link rel="stylesheet" type="text/css" href="#{bean.cssFile}" />
Si vous avez réellement ne pas besoin d'un onglet « Aperçu avant impression »/page, vous pouvez aussi simplement spécifier l'attribut media
dans le CSS link
et laisser le lien/bouton appeler window.print()
pendant onclick
au lieu d'ouvrir dans un nouvel onglet .
<link rel="stylesheet" type="text/css" href="normal.css" media="screen, handheld, projection" />
<link rel="stylesheet" type="text/css" href="print.css" media="print" />
Lorsque la page est sur le point d'être imprimé, celui spécifié par media="print"
sera automatiquement utilisé à la place.
J'ai déjà spécifié l'attribut media mais pour certaines raisons, le client souhaite un lien. – Roman
Bien, j'ai élargi la réponse avec un peu plus de possibilités que juste '$ {param}'. – BalusC