Olá caros amigos,
estou fazendo a apostila fj28 - VRaptor e estou na parte aonde ensina a utilizar o validator do Hibernate.
Eu tenho 3 dúvidas a postar aqui que ñ me funciona
eu utilizei as anotações do hibernate na classe Produto nos seguintes atributos:
@Length(max=40, message="descricao ñ pode ultrapasar 40 caracteres")
@NotEmpty(message="Descrição precisa ser preenchido")
private String descricao="";
@NotNull(message="Preço precisa ser preenchido")
@Min(value = 0, message="preço tem que ser um valor maior que 0")
private Double preco;
sendo que quando eu vou editar algum produto por exemplo no campo descrição eu notei que ele já cria automaticamente sempre no campo descrição 2 espaços em branco permitindo assim que a validação ñ funcione de forma adequada, eu já tentei até inicializar o atributo descrição com valor vazio. Ex.: descricao="";
Mas também ñ adiantou muita coisa. Eu percebi que teria que apagar os campos criados com espaços em branco para que a validação funcionasse. No qual ñ me serviria de nada. E sim antes eu utilizava a anotação @NotNull que tampouco funcionou bem, me ocorria o mesmo problema. O que será? será porque estou utilizando o para isso?
Me funciona bem a validação para caracteres maiores que 40 o @Length(max=40, message=“descricao ñ pode ultrapasar 40 caracteres”).
E também no atributo preço o valor 0 ñ esta validando de forma correta. Eu tentei utilizar por exemplo:
@Min(value = (long) 0.1, message=“preço tem que ser um valor maior que 0”)
que no qual o cast de tipo long foi o eclipse que indicou para criar e aceitei e tampouco me funciona a validação se coloco o valor 0. Me valida somente se ñ coloca valor algum.
Alguém pode me ajudar por favor??
Pois vou postar as classes aqui:
Produto:
package br.com.caelum.goodbuy.modelo;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import org.hibernate.validator.Length;
import org.hibernate.validator.Min;
import org.hibernate.validator.NotEmpty;
import org.hibernate.validator.NotNull;
@Entity
public class Produto {
@Id @GeneratedValue
private Long id;
@NotNull(message="Nome precisa ser preenchido")
@Length(min=3, message="Nome precisa ter mais de 3 letras")
private String nome;
@Length(max=40, message="descricao ñ pode ultrapasar 40 caracteres")
@NotEmpty(message="Descrição precisa ser preenchido")
private String descricao="";
@NotNull(message="Preço precisa ser preenchido")
@Min(value = (long) 0.1, message="preço tem que ser um valor maior que 0")
private Double preco;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public Double getPreco() {
return preco;
}
public void setPreco(Double preco) {
this.preco = preco;
}
}
ProdutosController
package br.com.caelum.goodbuy.controller;
import java.util.List;
import br.com.caelum.goodbuy.dao.ProdutoDao;
import br.com.caelum.goodbuy.modelo.Produto;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.Validator;
import br.com.caelum.vraptor.validator.ValidationMessage;
import br.com.caelum.vraptor.view.Results.*;
@Resource
public class ProdutosController {
private final ProdutoDao dao;
private final Result result;
private final Validator validator;
public ProdutosController(ProdutoDao dao, Result result, Validator validator) {
this.dao = dao;
this.result = result;
this.validator = validator;
}
public void remove(Long id) {
Produto produto = dao.carrega(id);
dao.remove(produto);
result.redirectTo(this).lista();
}
public Produto edita(Long id) {
return dao.carrega(id);
}
public void altera(Produto produto) {
dao.atualiza(produto);
result.redirectTo(this).lista();
}
public List<Produto> lista() {
return dao.listaTudo();
}
public void formulario() {
}
public void adiciona(final Produto produto) {
validator.validate(produto);
validator.onErrorUsePageOf(ProdutosController.class).formulario();
dao.salva(produto);
result.redirectTo(this).lista();
}
/**
* Metodo Adiciona Utilizando o Validaor do VRaptor
public void adiciona(final Produto produto) {
if (produto.getNome() == null ||
produto.getNome().length() < 3) {
validator.add(new ValidationMessage(
"Nome é obrigatório e precisa ter mais" +
" de 3 letras", "produto.nome"));
}
if (produto.getDescricao() == null ||
produto.getDescricao().length() > 40) {
validator.add(new ValidationMessage(
"Descrição é obrigatória não pode ter mais" +
" que 40 letras", "produto.descricao"));
}
if (produto.getPreco() == null || produto.getPreco() <= 0) {
validator.add(new ValidationMessage(
"Preço precisa ser um valor positivo", "produto.preco"));
}
validator.onErrorUsePageOf(ProdutosController.class)
.formulario();
dao.salva(produto);
result.redirectTo(this).lista();
}
**/
}
[quote]Abaixo envio a imagem da validação e outra coisa porque ñ me sai bem o nome descrição e preço no navegador, me sai assim: DescriçaÌ?o:, Preço:
Sei que deve ser algo com padronização sei que devo utilizar a UTF-8, mas aonde faria isso? são essas 3 dúvidas que tenho, muito obrigado!
[/quote]
