我需要制作一个链接,在新标签页中打开当前页面的打印版本。我已经有通讯员的CSS文件。但我不知道如何指定何时使用此文件而不是标准。如何使用jsf在新页面中打开网站的打印版本?
最简单的方法是相当不错的。如果我使用JSP,我只需将get参数添加到打印链接URL。有什么办法可以通过jsf获得类似的结果吗?
我需要制作一个链接,在新标签页中打开当前页面的打印版本。我已经有通讯员的CSS文件。但我不知道如何指定何时使用此文件而不是标准。如何使用jsf在新页面中打开网站的打印版本?
最简单的方法是相当不错的。如果我使用JSP,我只需将get参数添加到打印链接URL。有什么办法可以通过jsf获得类似的结果吗?
使用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 link
的media
属性,让在新标签中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"
指定的一个将自动被代替使用。
您可以使用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返回并在新选项卡中获取它。
我已经指定了媒体属性,但由于某些原因客户想要链接。 – Roman 2010-01-20 19:10:31
很好,我用几个更多的可能性扩展了答案,而不仅仅是'$ {param}'。 – BalusC 2010-01-20 19:13:08