2014-01-11 4 views
1

Я добавляю RichFaces компонент FileUpload, но когда я добавить файл в компоненте он дает ниже excpetionFileUpload компонент не работает в RichFaces 4 и JSF 2

01:02:43,601 SEVERE [javax.enterprise.resource.webcontainer.jsf.context] (http--127.0.0.1-8080-1) Method not found: com.visionetsys[email protected]1f09fcf.processFileUpload(): javax.faces.event.AbortProcessingException: Method not found: com.visionetsys[email protected]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] 

Но когда я изменить выражение Эл fileUploadListener="#{row.facesUploadActionListener.processFileUpload(this)}" он работает, но объект FileUploadEvent равен null.

Ниже приведен XHTML-код, в котором я FileUpload компонент:

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

Одно это я осведомленными в отладке, что я не получаю правильную функцию картографа из эш контекста.

+0

Можете ли вы разместить xhtml, который вы используете для загрузки? Ошибка просто говорит, что ваш компонент не имеет метода, заданного компоненту. – mabi

+0

Вы уверены, что в имени функции нет опечатки? – Makhiel

+0

no there no typo error Я проверил it.my el выражение хочу, чтобы один arg вызывал метод загрузки файлов richfaces. – user2470719

ответ

1

Убедитесь, что ваш метод fileUploadListener имеет единственный параметр типа FileUploadEvent, как показано на рисунке fileUpload sample витрины RichFaces.

+0

Да, я реализовал то же самое из образца, но одно различие это то, что я вызываю fileUploadListener = "# {register.uploadClass.fileuploadClass.processFileUpload}", таким образом, он не является woking, сначала я вызываю класс загрузки, а затем объект fileuploadclass и затем метод. – user2470719

+0

У меня возникли проблемы с пониманием того, что вы делаете из своего объяснения. Как насчет отправки некоторого примерного Java-кода? –

Смежные вопросы