fileUpload组件在Richfaces 4和JSF 2中不起作用

时间:2014-01-11 20:11:45

标签: jsf-2 richfaces

我正在添加richfaces fileupload组件,但是当我在组件中添加一个文件时,它给出了以下的删除

01:02:43,601 SEVERE [javax.enterprise.resource.webcontainer.jsf.context] (http--127.0.0.1-8080-1) Method not found: com.visionetsystems.vtp.attachment.screen.list.action.FileUploadActionListener@1f09fcf.processFileUpload(): javax.faces.event.AbortProcessingException: Method not found: com.visionetsystems.vtp.attachment.screen.list.action.FileUploadActionListener@1f09fcf.processFileUpload()
    at org.richfaces.event.MethodExpressionEventListener.processEvent(MethodExpressionEventListener.java:133) [richfaces-components-ui-4.3.4.Final.jar:4.3.4.Final]
    at org.richfaces.view.facelets.FileUploadHandler$FileUploadListenerImpl.processFileUpload(FileUploadHandler.java:55) [richfaces-components-ui-4.3.4.Final.jar:4.3.4.Final]
    at org.richfaces.event.FileUploadEvent.processListener(FileUploadEvent.java:48) [richfaces-components-api-4.3.4.Final.jar:4.3.4.Final]
    at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
    at org.richfaces.component.RowKeyContextEventWrapper.broadcast(RowKeyContextEventWrapper.java:104) [richfaces-components-ui-4.3.4.Final.jar:4.3.4.Final]
    at org.richfaces.component.UIDataAdaptor.broadcast(UIDataAdaptor.java:448) [richfaces-components-ui-4.3.4.Final.jar:4.3.4.Final]
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:759) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
    at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:935) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
    at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78) [jsf-impl-2.1.7-jbossorg-2.jar:]
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [jsf-impl-2.1.7-jbossorg-2.jar:]
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) [jsf-impl-2.1.7-jbossorg-2.jar:]
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
    at com.visionetsystems.fwk.faces.filter.ServletFilter.doFilter(ServletFilter.java:125) [vFacesViewManager.jar:]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:397) [jbossweb-7.0.13.Final.jar:]
    at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:]
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:]
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]
    at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_27]

但是当我将el表达式更改为fileUploadListener="#{row.facesUploadActionListener.processFileUpload(this)}"时,它可以工作,但FileUploadEvent对象为空。

下面是我有fileupload组件的xhtml代码:

<html 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:c="http://java.sun.com/jsp/jstl/core"
    xmlns:a4j="http://richfaces.org/a4j"
    xmlns:rich="http://richfaces.org/rich">
    <h:head>
        <title>Registration Demo Application </title>

        <h:outputStylesheet>
        .top {
        vertical-align: top;
        }

        .info {
        height: 202px;
        overflow: auto;
        }
    </h:outputStylesheet>

    </h:head>
    <body>
        <h1>Registration Form</h1>         
        <h:form>
            <table>
                <tbody>
                <tr>
                    <td>Date:</td>
                    <td>
                    <rich:calendar  id="calendar" 
                        value="#{register.date}"
                        cellWidth="24px" cellHeight="22px" style="width:200px">
                    </rich:calendar>
                    </td>
                    <td>
                        <h:inputText id="inputId" value="#{register.firstName}">
                            <a4j:ajax event="blur" id="ajaxid" render="out"  listener="#{register.printIt}"> </a4j:ajax>
                            <f:param id="test" name="nametest"></f:param>
                        </h:inputText>
                         <h:outputText value="#{register.firstName}" id="out" />
                    </td>
                </tr>  

                <tr>
                    <td>First Name:</td>
                    <td>
                    <h:inputText id="fName" value="#{register.firstName}" />
                    </td>
                </tr>  

                <tr>
                    <td>Last Name:</td>
                    <td>
                        <h:inputText id="lName" value="#{register.lastName}" />

                 </td>
                </tr>                 
                <tr>
                    <td>Sex:</td>
                    <td>
                        <h:inputText id="sex" value="#{register.sex}" />

                    </td>
                </tr>
            </tbody></table>
            <p>
                <rich:fileUpload fileUploadListener="#{register.uploadClass.processFileUpload}" id="upload" acceptedTypes="jpg, gif, png, bmp"
                ontyperejected="alert('Only JPG, GIF, PNG and BMP files are accepted');" maxFilesQuantity="5">
                <a4j:ajax event="uploadcomplete" execute="@none" render="info" />
                 </rich:fileUpload>
                <f:param id="windowId" value="T3434"></f:param>
                <h:commandButton value="Confirm" action="confirm" />
                <h:commandButton action="#{register.editAction()}" />               
            </p>
        </h:form>
    </body>
</html>

其中一个我在调试中注意到我没有从el上下文中获得正确的函数映射器。

1 个答案:

答案 0 :(得分:1)

请确保您的fileUploadListener方法具有FileUploadEvent类型的单个参数,如RichFaces展示的fileUpload sample所示。

相关问题