Bom dia Galera,
Estou fazendo uma aplicação web.
Onde, tenho o seguinte formulário.
<form action="mvc" method="post" enctype="multipart/form-data">
<input type="hidden" name="logica" value="AdicionaSistema"/>
Nome Sistema: <input type="text" name="nome" /> <br />
Descrição do Sistema: <input type="text" name="descricao" /><br />
Ativo? <input type=radio name="ativo" value="1"> Sim <input type=radio name="ativo" value="0"> Não<br></br>
Url <input type="text" name="url" /><br />
Imagem do Sistema <input type="file" name="imagem"/><br />
<input type="submit" value="Gravar" />
</form>
Como vcs podem ver. Utilizo, uma servlet que recebe o metodo, e manda para a servlet especificada.
<input type="hidden" name="logica" value="AdicionaSistema"/>
Minha mvc está assim.
protected void service(HttpServletRequest request,HttpServletResponse response) throws ServletException,
IOException{
String parametro = request.getParameter("logica");
String nomeDaClasse = "br.com.softsolweb.servlet."+ parametro;
try{
Class classe = Class.forName(nomeDaClasse);
Logica logica = (Logica) classe.newInstance();
logica.executa(request, response);
}catch (Exception e){
throw new ServletException("A lógica de negócios causou uma exceção ",e);
}
}
Minha AdicionaSistema.
public void executa(HttpServletRequest request, HttpServletResponse response)
throws Exception {
Sistemas sistemas = new Sistemas();
//montando o objeto
sistemas.setNome(request.getParameter("nome"));
sistemas.setAtivo(request.getParameter("ativo"));
sistemas.setDescricao(request.getParameter("descricao"));
//Adicionando imagem.
boolean isMultipart = FileUpload.isMultipartContent(request);
if (isMultipart) {
// Create a new file upload handler
DiskFileUpload upload = new DiskFileUpload();
// Set upload parameters
upload.setSizeMax(50*1024*1024); //50Mb
// upload.setRepositoryPath("/home/kde/file");
// Parse the request
List items = upload.parseRequest(request);
Iterator it = items.iterator();
while (it.hasNext()) {
FileItem fitem = (FileItem) it.next();
if (!fitem.isFormField()) {
File uploadedFile = new File("/home/kde/file/"+new Date().getTime()+"_"+fitem.getName());
fitem.write(uploadedFile);
System.out.println("Nome do arquivo: " + fitem.getName() + " - " + fitem.getSize() + "bytes");
//sistemas.setImagem(fitem.getName());
}
}
}
sistemas.setUrl(request.getParameter("url"));
//DAO
SistemasDAO dao = new SistemasDAO();
dao.adiciona(sistemas);
RequestDispatcher rd = request.getRequestDispatcher("/sucesso/adicionadosucesso.jsp");
rd.forward(request, response);
}
Quando eu utilizo.
enctype="multipart/form-data"
Dá o seguinte erro.
A lógica de negócios causou uma exceção
e
br.com.softsolweb.servlet.null
Como se eu não tivesse enviado o parametro logica preenchido.
Já quando eu retiro.
enctype="multipart/form-data"
Dá o seginte erro.
A lógica de negócios causou uma exceção
Claro né.
e
Column 'imagemsistemas' cannot be null
Pelo que eu entendi, quando eu estou utilizando o enctype, a minha mvc não consegue ler o meu hidden.
E quando retiro, a minha imagem não está ‘chegando’ na minha AdicionaSistema.
Vocês poderiam a me ajudar.
Sei que é uma besteirinha de nada.
Já está quase pronto o sistema.
Fiz todo em jsp, servlet.
Ficou muito bom.
Só falta enviar a imagem.
Outra coisa, to salvando a imagem em uma pasta, e o nome do arquivo no banco. Para depois recuperar.
sistemas.setImagem(fitem.getName());
Gratos.
Wesley Martins.