--Environnement - CentOS Linux release 7.8.2003 (Core) - Eclipse IDE for Enterprise Java Developers.Version: 2020-03 (4.15.0) - openjdk version "11.0.7" 2020-04-14 LTS - JSF 2.3.9
Journal de la console Eclipse
javax.el.MethodNotFoundException: /base.xhtml @17,113 listener="#{uploadBean.uploadFile}": Method not found: class brans.UploadBean.uploadFile(javax.faces.event.AjaxBehaviorEvent)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:69)
at com.sun.faces.facelets.tag.jsf.core.AjaxBehaviorListenerImpl.processAjaxBehavior(AjaxHandler.java:403)
at javax.faces.event.AjaxBehaviorEvent.processListener(AjaxBehaviorEvent.java:100)
at javax.faces.component.behavior.BehaviorBase.broadcast(BehaviorBase.java:82)
at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:481)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:847)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1395)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:58)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:76)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:177)
at javax.faces.webapp.FacesServlet.executeLifecyle(FacesServlet.java:707)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:451)
...réduction...
UploadBean.java
...réduction...
public void uploadFile(FacesContext fc, UIComponent uic, Object value) throws IOException {
if (!isUpload()) {
...réduction...
base.xhtml
...réduction...
<f:ajax event="change" execute="uploadArea" render="uploadArea" listener="#{uploadBean.uploadFile}" />
...réduction...
"Les paramètres de méthode sont différents" = "Different method" = "Aucune méthode n'est spécifiée dans l'attribut d'écoute" Quand j'ai essayé diverses choses ... par inadvertance ... quand j'y ai pensé, c'était naturel, mais il s'est avéré être "euh?"
UploadBean.java
public void uploadFile() throws IOException {
//Ou
public void uploadFile(AjaxBehaviorEvent event) throws IOException {
Si vous recevez javax.faces.event.AjaxBehaviorEvent, vous pouvez obtenir le contexte Faces avec getFacesContext
.
AjaxBehaviorEvent représente le comportement des composants spécifiques à Ajax). AjaxBehaviorEvent (API de spécification Jakarta EE 8) --Javadoc Japanese translation
base.xhtml
<f:ajax event="change" execute="uploadArea" render="uploadArea" listener="#{uploadBean.uploadFile(hoge, fuga, value)}" />