Upload no struts usando DynaValidatorForm

2 respostas
E

Oi,

Estou fazendo upload usando struts. Segundo o exemplo http://www.roseindia.net/struts/strutsfileuploadandsave.shtml , funciona.
O problema é que não criamos uma classe para o form como proposto, na aplicação declaramos tudo usando o DynaValidatorForm no struts-config.xml.

dessa forma:

<form-bean name="FileUploadForm" type="org.apache.struts.validator.DynaValidatorForm">
            <form-property name="theFile" type="java.lang.?"/>
</form-bean>

A dúvida é a seguinte: que type é declarado? Consultei a documentação e não tem nenhum tipo ligado diretamente ao FormFile. Só encontrei integer, string, byte…
Tentei usar algum desses e fazer a conversão no método, mas não funciona. As informações se perdem. Só se conserva se for object, mas não existe java.lang.Object…

O método no action ficou assim, só que dá erro devido ao FormFile.

public ActionForward execute(
			ActionMapping mapping,
			ActionForm form,
			HttpServletRequest request,
			HttpServletResponse response) throws Exception{
		
		DynaActionForm myForm = (DynaActionForm)form;
		if(form!=null){
			FormFile myFile = (FormFile) myForm.get("theFile");
// aqui dah erro
			if(myFile!=null){
				//String contentType = myFile.getContentType();								
				String fileName    = myFile.getFileName();
				//byte[] fileData    = myFile.getFileData();
				String filePath =  "C:\\java\\workspace\\pibic2\\site\\upload";
				if(!fileName.equals("")){  
					File fileToCreate = new File(filePath, fileName);
					if(!fileToCreate.exists()){
						FileOutputStream fileOutStream = new FileOutputStream(fileToCreate);
						fileOutStream.write(myFile.getFileData());
						fileOutStream.flush();
						fileOutStream.close();
					}  
				}
				request.setAttribute("fileName",fileName);
				request.setAttribute("myFile",myFile);
			}
		}
		return mapping.findForward("success");
	}

Alguém pode ajudar? Já passou por uma situação parecida?
(Vi um post aqui mesmo que usava DynaValidatorFom também, mas não tinha a parte do Struts.)

Obrigada.

2 Respostas

foxpv

acho q o tipo do campo seria:

org.apache.struts.upload.FormFile

E

É isso mesmo, foxpv. Só que usando DynaActionForm, que o DynaValidatorForm não suporta outros tipos.
Um colega tirou a dúvida. Mas, obrigada pela ajuda.

Ficou assim:

<form-bean name="FileUploadForm" type="org.apache.struts.action.DynaActionForm">  
       <form-property name="theFile" type="org.apache.struts.upload.FormFile"/>  
</form-bean>
Criado 7 de novembro de 2007
Ultima resposta 8 de nov. de 2007
Respostas 2
Participantes 2