【问题标题】:How do I stop richfaces adding borders to panels and calendars?如何停止 Richfaces 向面板和日历添加边框?
【发布时间】:2010-10-11 23:52:32
【问题描述】:

我希望使用自定义的 Richfaces 皮肤来处理我的大部分演示工作。不幸的是,richfaces 会在日历组件中的每个单元格和每个面板周围呈现边框。我想将它们关闭,以便当天数字站点在一个没有边界的开放网格中。没有明显的方法可以使用日历控件的外观或属性来做到这一点。

我可以使用自定义 CSS,但我更愿意使用框架从 Richfaces 创建的样式表中完全删除与边框相关的属性,而不是与框架对抗并使用丑陋的 CSS 覆盖所有内容.

那么如何阻止 Richfaces 向面板和日历添加边框?


这家伙有一个similar problem

【问题讨论】:

    标签: css jsf richfaces border skins


    【解决方案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 功能,我以前从未尝试过,但看起来它也适用于您正在尝试做的事情。

      【讨论】:

        猜你喜欢
        • 2013-06-21
        • 1970-01-01
        • 2016-02-03
        • 1970-01-01
        • 2011-12-03
        • 2017-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多