PrimeFaces主题不适用于带有Maven的JSF

时间:2019-02-07 13:34:01

标签: jsf primefaces

我只想更改我的应用程序的主题,但是它不起作用。

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" version="3.1">
    <context-param>
        <param-name>primefaces.THEME</param-name>
        <param-value>bootstrap</param-value>
    </context-param>
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <listener>
        <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
    </listener>
</web-app> 

我使用Maven来获取库,并具有以下两个依赖关系,这是否足够? pom.xml:

<dependency>
    <groupId>org.primefaces</groupId>
    <artifactId>primefaces</artifactId>
    <version>6.2</version>
</dependency>

<dependency>
    <groupId>org.primefaces.extensions</groupId>
    <artifactId>all-themes</artifactId>
    <version>1.0.8</version>
</dependency>

我不知道您是否需要更多信息,例如我的应用程序的示例.xhtml或其他内容。

编辑:我知道建议只发布必要的代码,但是我现在不知道需要哪些部分。这就是我搜索的xhtml:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:ui="http://xmlns.jcp.org/jsf/facelets" 
      xmlns:f="http://xmlns.jcp.org/jsf/core"
      xmlns:p="http://primefaces.org/ui">
<ui:composition template="layout.xhtml">
    <ui:define name="content">
        <h:form id="eintraegeSuche">
            <p:panel header="Telefonbucheinträge durchsuchen">
            <p:dataTable id="table" var="telefonbuch" value="#{sucheController.eintraege}" stickyHeader="true" resizableColumns="true" liveResize="true" style="margin-bottom:20px" paginator="true" rows="10" emptyMessage="Keine Telefonbucheinträge vorhanden" selection="#{telefonbuchList.selectedEntries}" selectionMode="multiple" rowKey="#{telefonbuch.id}"
                paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
                rowsPerPageTemplate="10,20,30">
                <f:facet name="header">
                    <p:commandButton id="toggler" type="button" value="Anzeige" style="float:right" icon="pi pi-align-justify" />
                    <p:columnToggler datasource="table" trigger="toggler" />    
                </f:facet>
                    <p:column sortBy="#{telefonbuch.vorname}">
                        <f:facet name="header">Vorname</f:facet>
                        <h:outputText value="#{telefonbuch.vorname}" />
                    </p:column>
                    <p:column sortBy="#{telefonbuch.nachname}">
                        <f:facet name="header">Nachname</f:facet>
                        <h:outputText value="#{telefonbuch.nachname}" />
                    </p:column>
                    <p:column sortBy="#{telefonbuch.telefonnummer}">
                        <f:facet name="header">Telefonnummer</f:facet>
                        <h:outputText value="#{telefonbuch.telefonnummer}" />
                    </p:column>
                    <p:column sortBy="#{telefonbuch.handynummer}">
                        <f:facet name="header">Handynummer</f:facet>
                        <h:outputText value="#{telefonbuch.handynummer}" />
                    </p:column>
                    <p:column sortBy="#{telefonbuch.geschaeftsstelle}">
                        <f:facet name="header">Geschäftsstelle</f:facet>
                        <h:outputText value="#{telefonbuch.geschaeftsstelle}" />
                    </p:column>
                </p:dataTable>
                <h:panelGrid columns="2" cellspacing="3" cellpadding="7">
                    <p:outputLabel for="vorname" value="Vorname: " />
                    <p:inputText id="vorname" value="#{sucheController.telefonbuch.vorname}" />
                    <p:outputLabel for="nachname" value="Nachname: " />
                    <p:inputText id="nachname" value="#{sucheController.telefonbuch.nachname}" />
                    <p:outputLabel for="vorname" value="Telefonnummer: " />
                    <p:inputText id="telefonnummer" value="#{sucheController.telefonbuch.telefonnummer}" />
                    <p:outputLabel for="vorname" value="Handynummer: " />
                    <p:inputText id="handynummer" value="#{sucheController.telefonbuch.handynummer}" />
                    <p:outputLabel for="geschaeftsstelle" value="Geschäftsstelle: " />
                    <p:inputText id="geschaeftsstelle" value="#{sucheController.telefonbuch.geschaeftsstelle}" />
                    <h:commandButton value="Suchen" update="table" action="#{sucheController.search(sucheController.telefonbuch.vorname, sucheController.telefonbuch.nachname, sucheController.telefonbuch.telefonnummer, sucheController.telefonbuch.handynummer, sucheController.telefonbuch.geschaeftsstelle)}" />
                </h:panelGrid>

1 个答案:

答案 0 :(得分:-2)

可能有点晚了,但是我遇到了同样的问题。将嵌入到<h:body>标记中后,便应用了主题。否则,桌子真的很丑,没有样式。

<h:head>
</h:head>

<h:body>
    <h:form>
        <p:dataTable ...>
            ...
        </p:dataTable>
    </h:form>
</h:body>