tomcat版本9

时间:2018-05-03 20:59:01

标签: java tomcat jsf primefaces

我们创建了一个facelets.taglib.xml文件,其中创建了一些用于某些JSF组件的标记。

对于创建的每个标记,我们创建一个负责每个标记事件的类

facelets.taglib.xml

<?xml version="1.0" encoding="UTF-8"?>
<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
        http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
    version="2.0">
    <namespace>http://www.sgr.com.br/jsf</namespace>

    <tag>
        <tag-name>upperCase</tag-name>
        <handler-class>com.sistema.util.tag.UpperCaseTag</handler-class>
    </tag>

    <!-- more tag -->

</facelet-taglib>

Classe upperCase

package com.sistema.util.tag;

import java.io.IOException;
import javax.faces.FacesException;
import javax.faces.component.UIComponent;
import javax.faces.view.facelets.FaceletContext;
import javax.faces.view.facelets.FaceletException;
import javax.faces.view.facelets.TagConfig;
import javax.faces.view.facelets.TagHandler;

public class UpperCaseTag extends TagHandler {

    public UpperCaseTag() {
        this(null);
    }

    public UpperCaseTag(TagConfig config) {
        super(config);
    }

    public void apply(FaceletContext context, UIComponent componente) throws IOException, FacesException, FaceletException {
        this.configureKey(componente);
    }

    private void configureKey(UIComponent componente) {
        componente.getAttributes().put("onkeyup", "toUpperCase(this)");
        componente.getAttributes().put("onkeypress", "return noAccent(event);");
    }
}

O modelodepáginasjsfcontémamporta执行arquivo javascript utils.jsquecontémométodotoUpperCasee noAccent usado na classe UpperCase Tag

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">

    <h:head>
        <f:facet name="first">
            <meta http-equiv="X-UA-Compatible" content="IE=edge" />
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
            <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"/>
            <meta name="apple-mobile-web-app-capable" content="yes" />
        </f:facet>


        <h:outputStylesheet name="css/sentinel-layout.css" library="sentinel-layout" />
        <h:outputStylesheet name="css/core-layout.css" library="sentinel-layout" />

        <ui:insert name="css" />
    </h:head>

    <h:body>        

        <ui:include src="topbar.xhtml" />

        <ui:include src="/page/principal/menu.xhtml" />

        <div id="layout-portlets-cover" class="fontRegular">

            <p:messages id="messages" closable="true"/>

            <ui:insert name="content">
               Template
            </ui:insert>

        </div>

        <h:outputScript name="js/utils.js"  library="custom"/>

    </h:body>

</html>

页面,我们在输入中使用upperCase标记。

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:p="http://primefaces.org/ui"
                xmlns:sgr="http://www.sgr.com.br/jsf"
                template="/WEB-INF/facelets/templates/template.xhtml">

    <ui:define name="content">

        <div class="Container100 ui-fluid">

            <div class="ContainerIndent">

                <h:form id="formFunID" prependId="false">
                    <p:panel id="pnlCamposID">

                        <p:outputLabel value="Nome completo:"/>
                        <p:inputText id="inptNome" value="#{funcionarioBean.funcionario.nome}">
                            <sgr:upperCase/>
                        </p:inputText>

                    </p:panel>
                </h:form>

            </div>

        </div>

    </ui:define>

</ui:composition>

作为图像,名称空间通常是 xmlns:sgr =“http://www.sgr.com.br/jsf导入,但键入字符不会获得upperCase

的web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
    id="WebApp_ID" version="3.1">
    <display-name>display-app</display-name>

    <welcome-file-list>
        <welcome-file>site.xhtml</welcome-file>
    </welcome-file-list>

    <listener> 
        <listener-class>com.sun.faces.config.ConfigureListener</listener-class> 
    </listener>

    <resource-env-ref>
        <resource-env-ref-name>BeanManager</resource-env-ref-name>
        <resource-env-ref-type>javax.enterprise.inject.spi.BeanManager</resource-env-ref-type>
    </resource-env-ref>

    <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>

    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>

    <context-param>
        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
        <param-value>server</param-value>
    </context-param>

    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Production</param-value>
    </context-param>

    <context-param>
        <param-name>primefaces.FONT_AWESOME</param-name>
        <param-value>true</param-value>
    </context-param>

    <context-param>
        <param-name>primefaces.THEME</param-name>
        <param-value>sentinel</param-value>
    </context-param>

    <context-param>
        <param-name>primefaces.TRANSFORM_METADATA</param-name>
        <param-value>true</param-value>
    </context-param>

    <context-param>
        <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
        <param-value>/WEB-INF/facelets.taglib.xml</param-value>
    </context-param>

    <context-param>
        <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
        <param-value>/WEB-INF/primefaces-sentinel.taglib.xml</param-value>
    </context-param>

    <context-param>
        <param-name>timezone</param-name>
        <param-value>GMT-3</param-value>
    </context-param>

    <context-param>
        <param-name>primefaces.UPLOADER</param-name>
        <param-value>commons</param-value>
    </context-param>

    <context-param>
        <param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name>
        <param-value>true</param-value>
    </context-param>

    <filter>
        <filter-name>PrimeFaces FileUpload Filter</filter-name>
        <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>PrimeFaces FileUpload Filter</filter-name>
        <servlet-name>Faces Servlet</servlet-name>
    </filter-mapping>

</web-app>

enter image description here

我们在使用wildfly之前将应用程序迁移到tomcat版本9,此迁移此标记停止工作。

javascript文件正在浏览器中正常加载。 如果有人知道tomcat是否有任何配置可以提供帮助。

0 个答案:

没有答案