我需要製作一個鏈接,在新標籤頁中打開當前頁面的打印版本。我已經有通訊員的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