Загрузка файлов Primefaces перестает работать после того, как я добавил PrettyFaces

Прежде всего, технологии, которые я использую Primefaces 6.1,PrettyFaces 3.3.3 а также Wildfly 11, Я просто хочу загрузить файл в свою базу данных с Primefaces <p:fileUpload> составная часть. Вот фрагмент кода, который я использовал.

<h:form>
    <p:fileUpload fileUploadListener="#{imageopbean.uploadImage}"  mode="advanced" auto="true" style="display:none;" oncomplete="uppicture()" styleClass="imageUploadButton" allowTypes="/(\.|\/)(gif|jpe?g|png)$/" >
          <f:attribute name="uniqueid" value="#{profileBean.theUser.userId}"/>
     </p:fileUpload>
</h:form>

это работало до того, как я использовал библиотеку PrettyFaces. Теперь это не вызывает fileUploadListener, Я прочитал этот вопрос и некоторые другие решения. Но я не могу заставить их работать. Что я делаю неправильно? Вот другие части моего кода. Благодарю.

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</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>extranet</param-value>
    </context-param>

    <context-param>
        <param-name>javax.faces.FACELETS_BUFFER_SIZE</param-name>
        <param-value>2048576</param-value>
    </context-param>

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

    <context-param>
        <param-name>javax.faces.FACELETS_REFRESH_PERIOD</param-name>
        <param-value>2</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>*.xhtml</url-pattern>
    </servlet-mapping>

    <filter>
        <filter-name>primeFacesFileUploadFilter</filter-name>
        <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>primeFacesFileUploadFilter</filter-name>
        <servlet-name>facesServlet</servlet-name>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
    </filter-mapping>

    <filter-mapping>
        <filter-name>loginFilter</filter-name>
        <url-pattern />
    </filter-mapping>

    <filter>
        <filter-name>Pretty Filter</filter-name>
        <filter-class>com.ocpsoft.pretty.PrettyFilter</filter-class>
    </filter>

    <filter-mapping> 
        <filter-name>Pretty Filter</filter-name> 
        <url-pattern>/*</url-pattern> 
        <dispatcher>FORWARD</dispatcher> 
        <dispatcher>REQUEST</dispatcher> 
        <dispatcher>ERROR</dispatcher>
        <dispatcher>ASYNC</dispatcher>
    </filter-mapping>

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

    <session-config>
        <session-timeout>
            60
        </session-timeout>
    </session-config>

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

    <error-page>
        <error-code>404</error-code>
        <location>/error-404.xhtml</location>
    </error-page>
    <error-page>
        <exception-type>javax.faces.application.ViewExpiredException</exception-type>
        <location>/login</location>
    </error-page>
    <error-page>
        <error-code>500</error-code>
        <location>/login</location>
    </error-page>
</web-app>

ImageBean.java

@Named("imageopbean")
@RequestScoped
public class ImageBean implements Serializable {

    @EJB
    private ImageManager imageManager;

    /**
     *
     * @param event
     */
    public void uploadImage(FileUploadEvent event) {
        System.out.println("UPLOAD WORK");
        ....
    }
}

1 ответ

Решение

Я пробовал большинство комбинаций фильтров в web.xml и ничего не получалось. Я нашел это,

и я удалил все, что я вставил в web.xml а также pom.xml, Вот решение снова:

1- Добавить enctype="multipart/form-data" на ваш <h:fom> тег

2- Отредактируйте скрипт в соответствии с вашей страницей JSF.

<script type="text/javascript">
     $(document).ready(function() {
         $("form[enctype='multipart/form-data']").attr("action","#{request.contextPath}/test/fileupload.xhtml");
    });
</script>

Это все..

Другие вопросы по тегам