JSF:使用模板时CSS不起作用(ui:composition)

时间:2014-04-08 17:49:48

标签: java css jsf jsf-2 stylesheet

Greetigs,伙计堆栈花!

我目前正在JSF中实现一个Web应用程序,我在JSF中使用css时遇到了问题。我正在使用ui:composition,而css文件不会影响任何内容。 我试图做的是将网页划分为顶栏,侧栏和主要内容。所有可能都有不同的背景颜色和文字样式

首先,我将展示文件及其相对路径(在NetBeans中实现,使用“web”作为这些文件的根文件夹):

主布局: /Resources/Templates/masterlayout.xhtml

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://xmlns.jcp.org/jsf/html">
    <h:head>
        <title><ui:insert name="windowsTitle"/></title>
        <h:outputStylesheet library ="CSS" name="styles.css"/>
    </h:head>
    <h:body>
        <div id="topBar">
            <ui:insert name="topBar">
                <ui:include src="/Resources/Templates/topBar.xhtml"/>
            </ui:insert>
        </div>

        <div id="sidebarLeft">
            <ui:insert name="sidebarLeft">
                <ui:include src="/Resources/Templates/sidebarLeft.xhtml"/>
            </ui:insert>
        </div>

        <div id="content">
            <ui:insert name="content"/>
        </div>
    </h:body>
</html>

顶栏: /Resources/Templates/topBar.xhtml

                               IGNORED                                                                     活动网站                                            

侧栏(包含列表): /Resources/Templates/sidebarLeft.xhtml

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
    <h:head>
        <title>IGNORED</title>
    </h:head>
    <h:body>
        <ui:composition>
            <h:form>
                You are signed up for these activities:<br/>
                <h:dataTable value="#{userB.singleUser.partActs}" width="400" var="pacts">
                    <h:column>
                        #{pacts.name}
                    </h:column>
                    <h:column>
                        #{pacts.dateAsString}
                    </h:column>
                    <h:column>
                        <h:commandLink value="Read more"/>
                    </h:column>
                </h:dataTable>
            </h:form>
        </ui:composition>
    </h:body>
</html>

最后,一个名为mainPage.xhtml的示例文件位于根web文件夹中:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        <ui:composition template="/Resources/Templates/masterLayout.xhtml">
            <ui:define name="content">
                <h:form>
                    <p>Welcome back, #{userB.singleUser.firstName}.</p>
                    <p>Choose an option:</p>
                    <p><h:commandButton value = "Look up activites" action = "#{secNavB.activityIndex}"/></p>
                    <p><h:commandButton value = "Look up friends"/></p>
                    <p><h:commandButton value = "Edit my account"/></p>
                </h:form>
            </ui:define>
        </ui:composition>
    </h:body>
</html>

现在,我将向您展示css文件: /Resources/CSS/style.css

#topBar {
   padding: 20px;
   height: 40px;
   margin-bottom: 10px;
   background: yellowgreen;
   border: 1px solid darkGray;
}

#sidebarLeft {
   border: thin solid lightGray;
   padding: 5px;
   width: 200px;
   height: 700px;
   background: yellowgreen;
}

#content {
   padding: 5px;
   border: thin solid lightGray;
   background: #FFFF99;
   position: absolute;
   right: 8px;
   left: 230px;
   height: 1000px;
   top: 90px;
}

您可以忽略不同h:命令按钮或链接的操作,它们与问题无关。 我的问题是CSS文件没有做任何更改。

  1. 背景颜色或字体样式无变化。

  2. 顶部栏,左侧边栏和主要内容从上到下放置,这与我想要达到的目的不一致:顶部的顶部栏,左侧的侧栏和主要内容中间。

  3. 我知道CSS文件本身应该有效(除非你证明我错了吗?)。当谈到.css时,我很生疏,但是我从几年前的一个旧项目中复制了它的工作(并且改变细节不应该很难)

    我还可以提一下,我尝试在主布局中使用更多直接链接:      虽然它没有用..

    提前:谢谢

    编辑: lu4242建议将资源重命名为资源。我这样做了,并将其他文件夹中的大写字母替换为非大写字母。发生了这种情况:

    /mainPage.xhtml @10,76 <ui:composition template="/resources/templates/masterLayout.xhtml"> Invalid path : /resources/templates/masterLayout.xhtml
    

    我找到了一种方法,将整个resources-folder放在WEB-INF下,并将WEB-INF添加到路径中。 现在我遇到了和以前一样的问题。这是行不通的! 还有其他建议吗?

    我现在已经将templates文件夹移出了resources-folder。他们现在是:

    /templates/masterlayout.xhtml
    /templates/topBar.xhtml
    /templates/sidebarLeft.xhtml
    /resources/css/style.css
    

0 个答案:

没有答案