代码之家  ›  专栏  ›  技术社区  ›  Simon Gibbs

如何阻止RichFaces向面板和日历添加边框?

  •  9
  • Simon Gibbs  · 技术社区  · 17 年前

    我希望使用定制的RichFaces皮肤来处理大部分演示工作。不幸的是,RichFaces渲染日历组件中每个单元格周围以及每个面板周围的边框。我想关闭它们,这样日数网站就可以在一个没有边界的开放网格中。使用日历控件的外观或属性没有明显的方法可以做到这一点。

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

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


    这个家伙有一个 similar problem

    3 回复  |  直到 14 年前
        1
  •  5
  •   Simon Gibbs    17 年前

    从3.3.0.ga版开始,不可能要求RichFaces停止为边框和背景渲染CSS。它需要重写内置样式表中的每个属性(包含在org.richfaces.renderkit.html.css中的属性,后者是richfaces-ui-3.3.0.ga.jar的一部分)。

    Plug and skin 为您提供了必要的功能,正如使用常规技术添加的自定义CSS一样,尽管Plug and Skin可能更好,因为您可以参考抽象颜色定义来补偿丢失的背景,如:

    <u:style name="color" skin="abstractColorName" />
    

    以下CSS属性对于快速消除边框和背景相关属性非常有用。

    border: none;
    background: transparent;
    

    要开始使用plug和skin,可以使用以下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、package、version和name属性以适合您的项目。选择一个反映多个皮肤定义的人工制品范围的人工制品和包装名称。


    虽然做了很多工作,但可以添加对一般格式XXXbackgroundEnabled和XXXborderEnabled皮肤属性的支持,以逐个关闭这些边框和背景CSS的呈现。

    您需要与richfaces团队合作来修补org.richfaces.renderkit.html.css中的xcss文件。在一个XCSJSF标记库(由XCSS文件中的http://jsf.exadel.com/template/util或http://jsf.exadel.com/template标识)中,您还需要某种条件输出功能,我预计将使用这些功能将CSS属性组包装到XCSS文件中。

    如果您对richfaces进行了这样的修改,那么您就可以从任何皮肤的属性文件中禁用有争议的CSS的呈现。

        2
  •  4
  •   user321068    14 年前

    有一种皮肤叫 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 .

        3
  •  1
  •   Mark    17 年前

    RichFaces有一个内置的皮肤系统,叫做Skinnability。Skinnability是标准CSS的高级扩展。您可以创建自己的皮肤文件以在应用程序中使用( jboss documentation )

    在richfaces impl jar中,文件夹/meta-inf/skins包含所有skin文件(.skin.properties)。复制一个并重命名它,修改你想要的。你必须重建罐子。

    或

    你可以使用 plug-n-skin RichFaces的特点,我以前从未尝试过,但看起来它也适用于你想要做的事情。