Pessoal estou tendo o sequinte problema ao tentar fazer upload atraves do Struts2. Aguem pode me ajudar??
[code]HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
java.lang.RuntimeException: Unable to load bean org.apache.struts2.dispatcher.multipart.MultiPartRequest (jakarta) - [unknown location]
com.opensymphony.xwork2.inject.ContainerBuilder$4.create(ContainerBuilder.java:136)
com.opensymphony.xwork2.inject.ContainerImpl.getInstance(ContainerImpl.java:476)
com.opensymphony.xwork2.inject.ContainerImpl.getInstance(ContainerImpl.java:486)
com.opensymphony.xwork2.inject.ContainerImpl$9.call(ContainerImpl.java:517)
com.opensymphony.xwork2.inject.ContainerImpl.callInContext(ContainerImpl.java:542)
com.opensymphony.xwork2.inject.ContainerImpl.getInstance(ContainerImpl.java:515)
org.apache.struts2.dispatcher.Dispatcher.wrapRequest(Dispatcher.java:697)
org.apache.struts2.dispatcher.FilterDispatcher.prepareDispatcherAndWrapRequest(FilterDispatcher.java:330)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:390)
root cause
Unable to load bean org.apache.struts2.dispatcher.multipart.MultiPartRequest (jakarta) - [unknown location]
org.apache.struts2.config.BeanSelectionProvider$ObjectFactoryDelegateFactory.create(BeanSelectionProvider.java:247)
com.opensymphony.xwork2.inject.ContainerBuilder$4.create(ContainerBuilder.java:134)
com.opensymphony.xwork2.inject.ContainerImpl.getInstance(ContainerImpl.java:476)
com.opensymphony.xwork2.inject.ContainerImpl.getInstance(ContainerImpl.java:486)
com.opensymphony.xwork2.inject.ContainerImpl$9.call(ContainerImpl.java:517)
com.opensymphony.xwork2.inject.ContainerImpl.callInContext(ContainerImpl.java:542)
com.opensymphony.xwork2.inject.ContainerImpl.getInstance(ContainerImpl.java:515)
org.apache.struts2.dispatcher.Dispatcher.wrapRequest(Dispatcher.java:697)
org.apache.struts2.dispatcher.FilterDispatcher.prepareDispatcherAndWrapRequest(FilterDispatcher.java:330)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:390)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.14 logs.[/code]
Seque minha jsp
[code]
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<head>
<title>File Upload Example</title>
</head>
<body>
<s:actionerror />
<s:fielderror />
<s:form action="salvarUpload" method="POST" enctype="multipart/form-data">
<tr>
<td colspan="2"><h1>File Upload Example</h1></td>
</tr>
<s:file name="upload" label="File"/>
<s:textfield name="caption" label="Caption"/>
<s:submit />
</s:form>
</body>
</html>[/code]
Coloque sua action e arquivo de configuração do Struts2 aqui para que possamos analisar melhor. Provavelmente você não fez a configuração da forma correta.
Seque o arquivo struts.xml valeu, pela ajuda.
[code]
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<include file="struts-default.xml" />
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<constant name="struts.devMode" value="false" />
<package name="default" extends="struts-default" namespace="/fileupload">
<action name="salvarUpload" class="br.inf.bluestar.SalvarArquivo" method="execute">
<result name="ok">/index.jsp</result>
</action>
</package>
</struts>[/code]
O primeiro problema que eu detectei, é que você não adicionou o interceptor de FileUpload na sua action. Dê uma olhada na documentação do Struts2, pois lá você vai encontrar um exemplo bem interessante de upload.
Blz, dessa maneira q ficou o meu struts.xml seria uma siolução para o primeiro problema?
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<include file="struts-default.xml" />
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<constant name="struts.devMode" value="false" />
<package name="default" extends="struts-default" namespace="/fileupload">
<action name="salvarUpload" class="br.inf.bluestar.SalvarArquivo" method="execute">
<interceptor-ref name="fileUpload"></interceptor-ref>
<result name="ok">/index.jsp</result>
</action>
</package>
</struts>
E mais estranho é q na minha action tenho o sequinte codigo. Declarando um objeto do tipo q no erro acima diz q não achou, e não da erro de compilação? Ou será q entendi errado?
private File upload;//The actual file
private String uploadContentType; //The content type of the file
private String uploadFileName; //The uploaded file name
private String fileCaption;//The caption of the file entered by user
public String execute() throws Exception {
org.apache.struts2.dispatcher.multipart.MultiPartRequest mt;
return "ok";
}
Kra ficou faltando a action tae dei uma lida por ai e nada de resolver meu problema. Pelo amor de Deus me ajuda. Não tem nem um exemplo pra download em algum lugar eu já preucurei e não achei.
package br.inf.bluestar;
import java.util.Date;
import java.io.File;
import br.inf.bluestar.model.Arquivo;
import br.inf.bluestar.model.ArquivoHome;
import com.opensymphony.xwork2.ActionSupport;
public class SalvarArquivo extends ActionSupport {
private File upload;//The actual file
private String uploadContentType; //The content type of the file
private String uploadFileName; //The uploaded file name
private String fileCaption;//The caption of the file entered by user
public String execute() throws Exception {
org.apache.struts2.dispatcher.multipart.MultiPartRequest mt;
return "ok";
}
public String getFileCaption() {
return fileCaption;
}
public void setFileCaption(String fileCaption) {
this.fileCaption = fileCaption;
}
public File getUpload() {
return upload;
}
public void setUpload(File upload) {
this.upload = upload;
}
public String getUploadContentType() {
return uploadContentType;
}
public void setUploadContentType(String uploadContentType) {
this.uploadContentType = uploadContentType;
}
public String getUploadFileName() {
return uploadFileName;
}
public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
}
}
Esqueleto
Problema resolvido então aqueles q tem problemas com upload com struts podem postar as dúvidas, até pedir um exemplo funfante.
Esqueleto
Amigo estou com o mesmo problema que você teve para fazer upload no struts 2, tem como vc postar como resolveu ou enviar um exemplo pra mim no meu email? email: contato arroba paulojunior ponto com
obrigado.
kra te mando sim, mas vai ter de esperar eu chegar em ksa e vai demorar.
Esqueleto
Se vocês tiverem problema com upload no struts2 posso fazer um tutorial pra ajudar o pessoal.
Guilherme,
seria uma boa… muitos tem duvida de como fazer upload em struts 2.
[quote=paulo.junior]Guilherme,
seria uma boa… muitos tem duvida de como fazer upload em struts 2. [/quote]
Ok, assim que eu tiver um tempo vou pegar um exemplo que tenho e vou dar uma melhorada nele.
Ola pessoal,
consegui fazer o upload, só que estou com problema para mover o arquivo da pasta termporaria do tomcat para o pasta de imagens do meu site.
Fiz da seguinte forma
Importei os jar’s: commons-fileupload-1.1.1.jar e commons-io-1.1.jar
depois criei um formulario de envio simples:
<s:form action="doUpload!salvar" method="POST" enctype="multipart/form-data">
<s:file name="foto" label="Foto"/>
<s:submit />
</s:form>
Depois na action fiz da seguinte forma:
public class ConteudoAction extends ActionSupport implements ServicesAction {
private File foto;
private String fileName;
private String ContentType;
public ConteudoAction() {
}
public void getUpload() {
try {
String fullFileName = ServletActionContext.getServletContext().
getRealPath("/uploads/"+ getFotoFileName() );
File theFile = new File(fullFileName);
FileUtils.copyFile(foto, theFile);
} catch (Exception e) {
addActionError(e.getMessage());
}
}
public String salvar() {
getUpload();
return SUCCESS;
}
public File getFoto() {
return foto;
}
public String getFotoFileName() {
return fileName;
}
public String getFotoContentType() {
return ContentType;
}
public void setFoto(File foto) {
this.foto = foto;
}
public void setFotoFileName(String fileName) {
this.fileName = fileName;
}
public void setFotoContentType(String ContentType) {
this.ContentType = ContentType;
}
}
O problema esta no método getUpload(); que não esta movendo a foto. Ja tentei mudar as permissões na pasta do windows mas não funcionou. Alguem ja passou por isso? ou tem um exemplo de como mover a foto?
Dá uma olhada nesse post que eu publiquei há um tempo atrás sobre upload com o Webwork. Funciona da mesma forma no Struts2.
http://blognotfoundexception.blogspot.com/2006/10/upload-com-webwork.html
Guilherme,
Funcionou perfeitamente depois de alguns ajustes nos struts-default.properties. Fiz igual ao seu tutorial.
A todos que tiverem o mesmo problema, é so seguir o tutorial de Guilherme substituindo o webwork.properties por struts-default.properties.
valew.