有条件地呈现用于打印的JSF组件



我想只打印我网页的某一部分(所以不是整个页面)。如何在JSF中实现这一点?

这通常是由CSS控制的display: none|block。查看CSS媒体规则

例如,默认CSS文件中的@media print {}:

@media print {
    #header, #footer, #menu { 
        display: none;
    }
}

(上面的示例将隐藏id为header, footermenu的HTML元素)

或者通过泛型样式类:

@media screen {
    .printonly { 
        display: none;
    }
}
@media print {
    .noprint { 
        display: none;
    }
    .printonly { 
        display: block;
    }
}

然后将styleClass="noprint"添加到您希望隐藏的内容中,并将styleClass="printonly"添加到您希望仅在打印中显示的内容中。

您还可以将打印特定的CSS放在自己的样式表文件中,并使用<link media="print"><h:outputStylesheet media="print">引用它,如下所示:

<link rel="stylesheet" href="#{request.contextPath}/css/print.css" media="print" />
<!-- Or -->
<link rel="stylesheet" href="#{resource['css/print.css']}" media="print" />
<!-- Or -->
<h:outputStylesheet name="css/print.css" media="print" />
#header, #footer, #menu { 
    display: none;
}

需要注意的是,<h:outputStylesheet media>属性只在JSF 2.1中添加,所以如果你还在使用JSF 2.0,考虑升级到至少2.1(应该100%兼容,而不需要在web应用程序本身进行任何代码和配置更改)。否则就使用普通的HTML <link>方法。

这可以通过指定媒体类型通过纯CSS实现:http://www.w3.org/TR/CSS2/media.html

相关内容

  • 没有找到相关文章

最新更新