Estou com um sério problema para fazer upload com JSF, usando Tomahawk.
Revirei a internet inteira hoje, e nada de funcionar.
Tenho os seguintes arquivos:
MyForm.jsp
[code]<h:form id=“MyForm” enctype=“multipart/form-data” >
<t:outputLabel for=“myFileId” value=“File: " />
<t:inputFileUpload id=“myFileId”
storage=“file”
value=”#{UploadBean.myUploadedFile}"
required=“true”/>
<h:message for=“myFileId” />
<h:inputText value="#{UploadBean.teste}" />
<h:commandButton value="Enviar" action="#{UploadBean.save}" />
<h:outputText value=“Teta: " />
<h:outputText value=”#{UploadBean.teste}" />
</h:form>[/code]
UploadBean.java
[code]package meupacote.controller;
import java.io.File;
import java.io.FileOutputStream;
import org.apache.myfaces.custom.fileupload.UploadedFile;
public class UploadBean {
private UploadedFile myUploadedFile;
private String teste;
public String getTeste() {
return teste;
}
public void setTeste(String teste) {
this.teste = teste;
}
public UploadedFile getMyUploadedFile() {
return myUploadedFile;
}
public void setMyUploadedFile(UploadedFile myUploadedFile) {
this.myUploadedFile = myUploadedFile;
}
public String save() {
try {
this.myUploadedFile.getInputStream();
String base = "/teste";
File f = new File("ss");
FileOutputStream fos = new FileOutputStream(base+this.myUploadedFile.getName());
fos.write(this.myUploadedFile.getBytes());
fos.close();
System.out.println("Done");
} catch (Exception e) {
e.printStackTrace();
}
return "true";
}
}[/code]
faces-config.xml
[code]
UploadBean
meupacote.controller.UploadBean
request
<navigation-rule>
<navigation-case>
<from-outcome>true</from-outcome>
<to-view-id>/MyForm.jsp</to-view-id>
</navigation-case>
</navigation-rule>[/code]
Pelos testes e debugs que fiz, os métodos save() e os getters nunca são acionados.
Quando tiro do form a opção enctype=“multipart/form-data”, estes métodos são acessados e o valor do texto é setado, porém com o upload nada acontece. Aliás, o upload não funciona nunca.
Alguém tem uma idéia do que eu faço?
Abraços
Grato
Diego Stiehl