如何从Java Faces应用程序中删除默认主题?

时间:2009-01-30 14:33:20

标签: java jsf themes

我之前从未使用过Java(C#是我的域名),但现在我有一个任务,我必须为一个小的Java网页应用特定的样式。这个样式来自我们推出的另一个ASP.NET应用程序,并且我帮助开发了它。似乎这种风格正在成为我们新的公司网络风格。 :P

网页非常小 - 它只有一个登录表单和一个带有十几个文本框和一个按钮的动作表单。单击该按钮时,将生成一个文件并可供下载。

这个应用程序已经由我的同事制作,他有很好的Java经验,但几乎没有网络经验。所以他再也没有帮助了。目前,该应用程序根本没有风格。只是一堆文本框。

应用程序是在NetBeans和Java Faces中完成的 - 据我所知。或者也许它是“视觉面孔”。不确定 - 无法使用Java世界中的所有这些名称进行正面或反面。无论如何,这个ASP.NET看起来很相似,你有一个带有<ui:textField><ui:passwordField>标签的XML页面,然后是一个包含所有Java代码的代码隐藏文件。 (实际上我怀疑ASP.NET是在此之后创建的,但除了这一点之外)

我已成功将HTML布局转换为我需要的布局,并在标题中设置我自己的CSS / JavaScript文件。只有一个问题 - Faces的东西也很不错,包括它自己的CSS样式表。当然听起来很合理,但是出于某种令人难以置信的原因,这些样式表还认为有必要覆盖所有常见标签上的样式 - <body><div><span>等。这很烦人,因为这打破了我的设计。现在,我可以更改自己的样式表来覆盖这些默认的Faces样式表,但这似乎......好吧,不是正确的解决方案。这就像一个解决方法,而不是一个“正确”的解决方案。为什么我应该重新定义每个标签的字体属性,何时它应该很容易从“body”标签向下级联?

有什么方法可以告诉Faces不要包含自己的样式表吗?我不会使用任何控件 - 只是文本框和按钮。和标签,当我找到它们。 :P

哦,是的,我尝试用简单的JSP(没有Faces)重新创建它,但是失败了,因为代码隐藏(那里有一些大型库)依赖于它。这也是我无法将它移动到我熟悉的ASP.NET的原因。

<小时/> 已添加:由于似乎有许多Java Faces框架,所以这里有一段可能有用的代码:

<jsp:root version="1.2" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:ui="http://www.sun.com/web/ui">
    <jsp:directive.page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"/>
        <f:view>
            <ui:page id="page1">
                <ui:html id="html1">
                    <ui:head id="head1">

另外我忘了提到NetBeans中有一个名为“Sun Web UI组件主题”的文件夹,其中有三个项目 - “灰色主题”,“绿色主题”和“默认主题”。我可以选择其中一个作为活动的,这也会更改默认包含的CSS。不幸的是我不能选择任何一个。

好的,我已经改变了我的风格来覆盖这些样式表。听到更多关于我在这里处理的事情,仍然会很高兴。我甚至不知道应该在哪里找文件......

已添加2:此外,TextField的名称空间为com.sun.rave.web.ui.component

1 个答案:

答案 0 :(得分:1)

这是使用哪个JSF(JavaServer Faces)库? MyFaces的? RichFaces的?有什么不同吗?
我不知道你是否找到了这个资源:JSF Tag lib。 如果它使用<ui:类型标签,那么它也使用Facelets,它是JSF的模板系统。但是,您可能正在寻找的tag参数是styleClass和Style。

标准JSF确实没有默认样式,我认为可能还有另一个正在使用的JSF库。在WEB-INF目录下可能是一个名为lib的目录,其中包含jar文件。这些应该可以为您提供有关正在使用的库的线索。

RichFaces拥有自己的造型,完全可以设置主题。在你的特殊情况下,对你的情况来说,这将是一场痛苦而不是它的价值。其他JSF库也可以这样做。

不幸的是,我只能指出你可能遇到问题的地点和想法。考虑到JSF的大量选择,这是我能做的最好的事情。