2010-01-20 36 views
4

我需要制作一个链接,在新标签页中打开当前页面的打印版本。我已经有通讯员的CSS文件。但我不知道如何指定何时使用此文件而不是标准。如何使用jsf在新页面中打开网站的打印版本?

最简单的方法是相当不错的。如果我使用JSP,我只需将get参数添加到打印链接URL。有什么办法可以通过jsf获得类似的结果吗?

回答

3

使用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'}" /> 

您还可以检索它作为一个bean proprerty的通常的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}" /> 

如果你真的不需要一个“打印预览”选项卡/页面,那么你也可以只指定在CSS linkmedia属性,让在新标签中onclick,而不是打开链接/按钮调用window.print()

<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"指定的一个将自动被代替使用。

+0

我已经指定了媒体属性,但由于某些原因客户想要链接。 – Roman 2010-01-20 19:10:31

+0

很好,我用几个更多的可能性扩展了答案,而不仅仅是'$ {param}'。 – BalusC 2010-01-20 19:13:08

1

您可以使用f:param标记将获取参数添加到任何JSF链接。

<h:outputLink value="/somepage.xhtml" target="_blank"> 
    <h:outputText value="Link to Some Page"/> 
    <f:param name="someparam" value="somevalue"> 
</h:outputLink> 

这将基本上呈现这样的事情:PARAM领域:

<a href="/somepage.xhtml?someparam=somevalue" target="_blank">Link to Some Page</a> 

你可以用多个F添加多个PARAMS。或者,如果它是静态的,则可以将其作为outputLink本身的一部分添加。

<h:outputLink value="/somepage.xhtml?someparam=somevalue" target="_blank"> 
    <h:outputText value="Link to Some Page"/> 
</h:outputLink> 

这个问题当然是因为你无法做到这一点并触发服务器端事件。我还没有弄清楚如何从POST返回并在新选项卡中获取它。

相关问题