Bem, pesquisei aqui no forum e encontrei alguns tópicos falando a respeito, mas não consegui aplicar no meu form,
No Modelo Cliente.class, eu adicionei o campo foto como blob e mandei gerar a tabela no banco, confira
package br.com.caelum.produtos.modelo;
import java.io.File;
import java.util.Calendar;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import org.hibernate.validator.Email;
import org.hibernate.validator.NotEmpty;
import org.hibernate.validator.NotNull;
import br.com.caelum.stella.hibernate.validator.CPF;
@Entity
public class Cliente {
@Id
@GeneratedValue
private int id;
@NotEmpty(message="Favor informar Nome")
private String nome;
@Column(unique=true)
@NotEmpty(message="Favor informar CPF")
@CPF(message="CPF Inválido")
private String cpf;
@Column(unique=true)
@NotEmpty(message="Favor informar E-mail")
@Email(message="E-mail Inválido")
private String email;
@NotEmpty(message="Favor informar Login")
private String login;
@NotEmpty(message="Favor informar Senha")
private String senha;
@NotNull(message="Favor informar Data")
@Temporal(TemporalType.DATE)
private Calendar dataNascimento;
@NotEmpty(message="Favor informar Colocar Imagem")
private File foto;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public Calendar getDataNascimento() {
return dataNascimento;
}
public void setDataNascimento(Calendar dataNascimento) {
this.dataNascimento = dataNascimento;
}
public void setFoto(File foto) {
this.foto = foto;
}
public File getFoto() {
return foto;
}
}
clienteDao:
package br.com.caelum.produtos.dao;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;
import br.com.caelum.produtos.modelo.Cliente;
public class ClienteDao {
private final Session session;
public ClienteDao(){
this.session = new HibernateUtil().openSession();
}
public void adiciona(Cliente c){
Transaction tx = session.beginTransaction();
session.save(c);
tx.commit();
}
public void atualiza(Cliente c){
Transaction tx = session.beginTransaction();
session.update(c);
tx.commit();
}
public void remove(Cliente c){
Transaction tx = session.beginTransaction();
session.delete(c);
tx.commit();
}
@SuppressWarnings("unchecked")
public List<Cliente> lista(){
return session.createCriteria(Cliente.class).list();
}
public Cliente carrega(Long id) {
return (Cliente)session.load(Cliente.class,id);
}
}
ClienteController:
package br.com.caelum.produtos.controller;
import java.util.List;
import org.hibernate.exception.ConstraintViolationException;
import br.com.caelum.produtos.dao.ClienteDao;
import br.com.caelum.produtos.modelo.Cliente;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.Validator;
import br.com.caelum.vraptor.view.Results;
import static br.com.caelum.vraptor.view.Results.page;
@Resource
public class ClienteController {
public void cadastracliente(){
}
private Validator validator;
private Result result;
public ClienteController(Result result, Validator validator){
this.result = result;
this.validator = validator;
}
public List<Cliente> lista(){
return new ClienteDao().lista();
}
public void adiciona(Cliente cliente){
try{
validator.validate(cliente);
validator.onErrorUse(page()).of(ClienteController.class).cadastracliente();
new ClienteDao().adiciona(cliente);
result.include("mensagem", "Cliente cadastrado com sucesso");
result.use(Results.logic()).redirectTo(ClienteController.class).cadastracliente();
}catch (ConstraintViolationException e) {
result.include("mensagem", "Usuário já registrado");
result.use(Results.logic()).redirectTo(ClienteController.class).cadastracliente();
}
}
public void atualiza(Cliente cliente){
validator.validate(cliente);
validator.onErrorUse(page()).of(ClienteController.class).cadastracliente();
new ClienteDao().atualiza(cliente);
result.include("mensagem", "Cliente cadastrado com sucesso");
result.use(Results.logic()).redirectTo(ClienteController.class).cadastracliente();
}
public void remove(Cliente cliente){
validator.validate(cliente);
validator.onErrorUse(page()).of(ClienteController.class).cadastracliente();
new ClienteDao().remove(cliente);
result.include("mensagem", "Cliente cadastrado com sucesso");
result.use(Results.logic()).redirectTo(ClienteController.class).cadastracliente();
}
}
No Jsp, coloquei o campo:
Foto: <input type="file" name="cliente.foto" value="${cliente.foto}"/><br/>
O que penso é que era pra ele já está enviando aquivo para o banco de dados, mas não está enviando.
Na documentação do vraptor ele não me diz se aplico a função no Controller ou no Dao, poderiam me da uma luz?
Valeuuu