如何停止 Richfaces 向面板和日历添加边框?
Posted
技术标签:
【中文标题】如何停止 Richfaces 向面板和日历添加边框?【英文标题】:How do I stop richfaces adding borders to panels and calendars? 【发布时间】:2010-10-11 23:52:32 【问题描述】:我希望使用自定义的 Richfaces 皮肤来处理我的大部分演示工作。不幸的是,richfaces 会在日历组件中的每个单元格和每个面板周围呈现边框。我想将它们关闭,以便当天数字站点在一个没有边界的开放网格中。没有明显的方法可以使用日历控件的外观或属性来做到这一点。
我可以使用自定义 CSS,但我更愿意使用框架从 Richfaces 创建的样式表中完全删除与边框相关的属性,而不是与框架对抗并使用丑陋的 CSS 覆盖所有内容.
那么如何阻止 Richfaces 向面板和日历添加边框?
这家伙有一个similar problem
【问题讨论】:
【参考方案1】:从 3.3.0.GA 版本开始,无法要求 Richfaces 停止为边框和背景渲染 CSS。有必要覆盖内置样式表中的每个属性(包含在 org.richfaces.renderkit.html.css 中,它是richfaces-ui-3.3.0.GA.jar 的一部分)。
Plug and skin 为您提供了执行此操作的必要功能,就像使用常用技术添加的自定义 CSS 一样,尽管插件和皮肤可以说更好,因为您可以参考抽象颜色定义来弥补缺失的背景,如下所示:
<u:style name="color" skin="abstractColorName" />
以下 CSS 属性可用于快速中和边框和背景相关属性。
border: none;
background: transparent;
要开始使用插件和皮肤,您可以使用以下 Maven2 命令序列:
mvn archetype:generate -DarchetypeGroupId=org.richfaces.cdk -DarchetypeArtifactId=maven-archetype-plug-n-skin -DarchetypeVersion=3.3.0.GA -DartifactId=fil-skins -Dpackage=com.feelitlive.richfaces -DgroupId=com.feelitlive.server -Dversion=0.0.1-SNAPSHOT -DarchetypeRepository=http://repository.jboss.com/maven2/
cd fil-skins
mvn cdk:add-skin -Dname=fil -Dpackage=com.feelitlive.richfaces.skins
这最好从命令行完成,因为遗憾的是 Eclipse 插件无法在 jboss 存储库中找到原型(其他 IDE 可能会更好地处理它)。您需要更改 artifactId、groupId、包、版本和名称属性以适合您的项目。选择一个反映工件范围的工件和包名称以保存多个皮肤定义。
虽然需要做很多工作,但可以添加对通用格式 xxxBackgroundEnabled 和 xxxBorderEnabled 的皮肤属性的支持,以根据具体情况关闭这些边框和背景 CSS 的呈现。
您需要与 Richfaces 团队合作修补 org.richfaces.renderkit.html.css 中的 xcss 文件。您还需要在其中一个 XCSS JSF 标记库中提供某种条件输出功能(由 XCSS 文件中的 http:/jsf.exadel.com/template/util 或 http:/jsf.exadel.com/template 标识)我希望用它来包装 XCSS 文件中的 CSS 属性组。
如果您对 Richfaces 进行了这样的修改,那么您将能够从任何皮肤的属性文件中禁用有争议的 CSS 的呈现。
【讨论】:
【参考方案2】:有一个名为plain
的皮肤几乎没有附加任何样式。
这是excerpt from the documentation:
皮肤“普通”是从 3.0.2 版本添加的。它没有任何 参数。将 RichFaces 组件嵌入到 现有项目有自己的风格。
你可以通过添加来激活它
<context-param>
<param-name>org.richfaces.SKIN</param-name>
<param-value>plain</param-value>
</context-param>
到web.xml
。
您还可以阻止 RichFaces 加载任何样式
<context-param>
<param-name>org.richfaces.LoadStyleStrategy</param-name>
<param-value>None</param-value>
</context-param>
在web.xml
中设置。
但要小心,因为它won't work in JBoss Portlet Bridge 1.0.0。
【讨论】:
"plain" 仍然渲染太多 CSS!【参考方案3】:RichFaces 有一个名为 Skinnablity 的内置皮肤系统。 Skinnability 是标准 CSS 的高级扩展。您可以创建自己的皮肤文件以在您的应用程序中使用 (jboss documentation)。
在richfaces-impl jar 中,文件夹/META-INF/skins 包含所有皮肤文件(.skin.properties)。复制一个并重命名它,修改你想要的。您将不得不重建 jar。
或
您可以使用richfaces 的plug-n-skin 功能,我以前从未尝试过,但看起来它也适用于您正在尝试做的事情。
【讨论】:
以上是关于如何停止 Richfaces 向面板和日历添加边框?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Richfaces 和 CSS 在 JSF 应用程序中添加背景图像?