Olá pessoal, estou fazendo o exercicio da apostila fj28 VRaptor capitulo 15 - Apêndice Download e Upload.
Meu programa esa apresentando alguns erros, que desconheço e não sei o que fazer.
Bem minha classe ImagensController esta assim:
package br.com.caelum.goodbuy.controller;
import br.com.caelum.vraptor.interceptor.multipart.UploadedFile;
import java.io.File;
import br.com.caelum.goodbuy.modelo.Imagens;
import br.com.caelum.goodbuy.modelo.Produto;
import br.com.caelum.vraptor.Get;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.Validator;
import br.com.caelum.vraptor.validator.Validations;
@Resource
public class ImagensController {
private final Validator validator;
private final Imagens imagens;
private final Result result;
public ImagensController(Validator validator, Imagens imagens, Result result) {
this.validator = validator;
this.imagens = imagens;
this.result = result;
}
public File mostra(Produto produto) {
return new File(pastaImagens, produto.getId() + ".imagem");
}
@Get("/produtos/{produto.id}/imagem")
public File download(Produto produto) {
return imagens.mostra(produto);
}
@Post("/produtos/{produto.id}/imagem")
public void upload(Produto produto,
final UploadedFile imagem) {
validator.checking(new Validations() {{
if (that(imagem, is(notNullValue()), "imagem",
"imagem.nula")) {
that(imagem.getContentType(),
startsWith("image"), "imagem", "nao.eh.imagem");
} }});
validator
.onErrorRedirectTo(ProdutosController.class)
.edita(produto.getId());
imagens.salva(imagem, produto);
result.redirectTo(ProdutosController.class)
.edita(produto.getId());
}
}
Bem no começo do codigo o eclipse me diz para eu configurar a build path bem na linha onde digo qual pacote se encontra a classe:
package br.com.caelum.goodbuy.controller;
[color=red]Erro:
[/color]
Eu fui ver o que necessitava para configurar o build path, mas não tenho idéia do que tenho que configurar.
Daí um outro erro que me aperece é no metodo mostra:
public File mostra(Produto produto) {
return new File(pastaImagens, produto.getId() + ".imagem");
}
[color=red]Erro:[/color]
e um outro erro é no método upload:
public void upload(Produto produto,
final UploadedFile imagem) {
validator.checking(new Validations() {{
if (that(imagem, is(notNullValue()), "imagem",
"imagem.nula")) {
that(imagem.getContentType(),
startsWith("image"), "imagem", "nao.eh.imagem");
} }});
validator
.onErrorRedirectTo(ProdutosController.class)
.edita(produto.getId());
imagens.salva(imagem, produto);
result.redirectTo(ProdutosController.class)
.edita(produto.getId());
}
[color=red]
Erro: [/color]
Minha outra classe Imagens esta assim:
package br.com.caelum.goodbuy.modelo;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.servlet.ServletContext;
import br.com.caelum.vraptor.ioc.Component;
import org.apache.commons.io.IOUtils;
import sun.misc.IOUtils;
import br.com.caelum.vraptor.interceptor.multipart.UploadedFile;
@Component
public class Imagens {
private File pastaImagens;
public Imagens(ServletContext context) {
String caminhoImagens = context.getRealPath("/WEB-INF/imagens");
pastaImagens = new File(caminhoImagens);
pastaImagens.mkdir();
}
public File mostra(Produto produto) {
return new File(pastaImagens, produto.getId() + ".imagem");
}
public void salva(UploadedFile imagem, Produto produto) {
File destino = new File(pastaImagens, produto.getId() + ".imagem");
try {
IOUtils.copy(imagem.getFile(), new FileOutputStream(destino));
} catch (IOException e) {
throw new RuntimeException("Erro ao copiar imagem", e);
}
}
}
Me apresenta um erro bem aonde importo o:
import org.apache.commons.io.IOUtils;
[color=darkred]Erro:[/color]
e também no método salva:
public void salva(UploadedFile imagem, Produto produto) {
File destino = new File(pastaImagens, produto.getId() + ".imagem");
try {
IOUtils.copy(imagem.getFile(), new FileOutputStream(destino));
} catch (IOException e) {
throw new RuntimeException("Erro ao copiar imagem", e);
}
}
[color=red]Erro:[/color]