css - 将 Primefaces 的样式应用于普通 jsf 组件?
问题描述
我将 Primefaces 用于我的 JSF 应用程序。在一页中,我必须使用<h:inputFile>
而不是<p:fileUpload>
等效的。结果,它在没有 Primeface 样式的情况下呈现:
如何将 Primeface css 样式应用于<h:inputFile>
? (例如让它看起来像一个 Primefaces 按钮)
解决方案
看看基本p:fileUpload
是如何呈现的。复制组件的输出 HTML,您就快到了。
您会注意到实际input type="file"
有一个属性tabindex="-1"
,您需要将其添加到您的组件中。您应该使用 passthrough 属性来执行此操作。请参阅:自定义 HTML 标记属性不由 JSF 呈现。所以,添加这个命名空间:xmlns:a="http://java.sun.com/jsf/passthrough"
.
您需要注意的另一件事是加载 PrimeFaces 用于设置上传组件样式的样式表。为此,请添加:
<h:outputStylesheet name="components.css" library="primefaces"/>
<h:outputStylesheet name="fileupload/fileupload.css" library="primefaces"/>
请注意,components.css
如果您在页面上使用其他 PrimeFaces 组件,则可以省略。
最后,您的上传组件将如下所示:
<span class="ui-fileupload-simple ui-widget">
<span class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-left">
<span class="ui-button-icon-left ui-icon ui-c ui-icon-plusthick"></span>
<span class="ui-button-text ui-c">Choose</span>
<h:inputFile a:tabindex="-1"/>
</span>
</span>
请注意,您将缺少由其 JavaScript 添加到 PrimeFaces 组件的交互性!我的建议,只需使用p:fileUpload
.
推荐阅读
- marklogic - ML Gradle 部署带有注释问题的搜索选项
- node.js - Node JS - nodemailer & imap-simple - 识别线程
- python - 在 Python 中极快地生成 gamma 变量
- c++ - 我需要在 C++ 中找到两个字符串之间的公共前缀
- chart.js - Chart JS 水平条形图 条形和图表宽度
- mapbox-gl-js - 基于建筑物坐标的 MapBox 3d 建筑物样式
- php - SQL 文本列包含一个日期。如何转换以从文本中获取实际日期?
- python - 如何在 python 中解决这个迭代练习?
- c# - 如何在array.orderby C#上获取随机顺序
- reactjs - 为什么我在 TypeScript 中使用 React Hook 时遇到“......既不是 React 函数组件也不是自定义 React Hook 函数”