如何停止 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 向面板和日历添加边框?的主要内容,如果未能解决你的问题,请参考以下文章

如何在winform面板的边框上添加图像?

如何填充richfaces 选项列表的右侧?

如何使用 Richfaces 和 CSS 在 JSF 应用程序中添加背景图像?

如何同时向 UIView 添加顶角、顶边框和顶阴影

Objective-c:如何使用自动布局向 UIView 添加边框 [关闭]

JAVA中的JPanel怎么使用呢?