Method not found ? Como assim ?

0 respostas
jsfjava
Cleiton_Ribeiro_Dev

Ola Pessoal!

Estou enfrentando um probleminha curioso, pois ao meu ver o problema nao deveria estar acontecendo.

Configurei um projeto JSF com CDI e ao tentar usar o componente de upload do primefaces para capturar o evento de upload, infelizmente o evento de upload nao encontra o metodo no bean.

Meu Pom XML:

<properties>
				<maven.compiler.source>1.8</maven.compiler.source>
				<maven.compiler.target>1.8</maven.compiler.target>
				</properties>

				<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-compiler-plugin</artifactId>
						<version>3.7.0</version>
						<configuration>
							<source>1.8</source>
							<target>1.8</target>
						</configuration>
					</plugin>
				</plugins>
				</build>

				<dependencies>
				<dependency>
					<groupId>javax.faces</groupId>
					<artifactId>jsf-api</artifactId>
					<version>2.1</version>
					<scope>provided</scope>
				</dependency>
				<dependency>
					<groupId>com.sun.faces</groupId>
					<artifactId>jsf-impl</artifactId>
					<version>2.2.14</version>
				</dependency>
				<dependency>
					<groupId>javax.servlet</groupId>
					<artifactId>javax.servlet-api</artifactId>
					<version>3.0.1</version>
					<scope>provided</scope>
				</dependency>
				<dependency>
					<groupId>org.primefaces</groupId>
					<artifactId>primefaces</artifactId>
					<version>6.1</version>
				</dependency>
				<dependency>
					<groupId>javax.enterprise</groupId>
					<artifactId>cdi-api</artifactId>
					<version>2.0</version>
					<scope>provided</scope>
				</dependency>
				<dependency>
					<groupId>javax</groupId>
					<artifactId>javaee-api</artifactId>
					<version>7.0</version>
					<scope>provided</scope>
				</dependency>

A página :

<h:head>
</h:head>

<body>
	<h:form>
		<p:fileUpload fileUploadListener="#{file.uploadHandler()}"
			mode="advanced" dragDropSupport="false" update="messages"
			sizeLimit="100000" fileLimit="3"
			allowTypes="/(\.|\/)(gif|jpe?g|txt)$/" />

		<p:growl id="messages" showDetail="true" />
	</h:form>
</body>
</html>

Por fim, o Bean:
package timesheet.business.bean;

import java.io.Serializable;

import javax.faces.view.ViewScoped;
import javax.inject.Named;

import org.primefaces.event.FileUploadEvent;

@Named
@ViewScoped
public class File implements Serializable {

	private static final long serialVersionUID = -6644472075906217176L;
	private String fileName;

	public String getFileName() {
		return fileName;
	}

	public void setFileName(String fileName) {
		this.fileName = fileName;
	}
	
	public void uploadHandler(FileUploadEvent event) {
		System.out.println("Nome do Arquivo: " + event.getFile().getFileName());
	}
}

A saída do erro:
15:59:36,935 WARNING [javax.enterprise.resource.webcontainer.jsf.lifecycle] (default task-27) /index.xhtml @16,45 fileUploadListener="#{file.uploadHandler()}": Method not found: class timesheet.business.bean.File.uploadHandler(): javax.el.MethodNotFoundException: /index.xhtml @16,45 fileUploadListener="#{file.uploadHandler()}": Method not found: class timesheet.business.bean.File.uploadHandler()
Eu simplesmente nao entendo o motivo do evento nao achar o metdo uploadHandler.

Alguma ideia?

Criado 8 de outubro de 2017
Respostas 0
Participantes 1