Tenho uma classe Movimentacao que o status é definido dependendo de quanto foi pago referente aquela movimentação.
Exemplo:
Se a Movimentacao tem valor 100 e foi quitado 0 ela esta com status NAO QUITADA(N)
Se a Movimentacao tem valor 100 e foi quitado qualquer valor menor que 100 ela esta com status QUITADA PARCIALMENTE ( P )
Se a Movimentacao tem valor 100 e foi quitado 100 ela tem status QUITADA (Q)
A classe esta assim:
public class Movimentacao implements Serializable, Entidade {
...
@Column(nullable=false)
@NotNull
@DecimalMin("0.01")
private BigDecimal valor;
@Column(nullable=false)
@NotNull
@DecimalMin("0.01")
private BigDecimal valorQuitado;
@Enumerated(EnumType.STRING)
@Column(nullable=false, length=1)
@NotNull
private MovimentacaoStatus status;
....
//outros getters e setters
// aqui tenho o meu setStatus que pode ser privado e nao recebe parâmetro.... pq o status é definido
// através dos atributos valor e valorQuitdao
public void setStatus() {
if(this.valorQuitado.compareTo(BigDecimal.ZERO) == 0){
this.status = MovimentacaoStatus.N;
}else{
if(this.valorQuitado.compareTo(this.valor) == 0){
this.status = MovimentacaoStatus.Q;
}else{
this.status = MovimentacaoStatus.P;
}
}
}
....
}
Não estou sabendo como fazer… pq se deixo exatamente assim… recebo erro do JSF pq o meu xhtml (e depois o bean) de fato não passa nenhum valor para o atributo status…
#{movimentacaoBean.salvar}: javax.ejb.EJBException: javax.validation.ConstraintViolationException: Validation failed for classes [projeto.model.Movimentacao] during persist time for groups [javax.validation.groups.Default, ] List of constraint violations:[ ConstraintViolationImpl{interpolatedMessage='Esta campo não pode estar vazio', propertyPath=status, rootBeanClass=class projeto.model.Movimentacao, messageTemplate='{javax.validation.constraints.NotNull.message}'} ]
mas preciso que o status seja definido assim e nao pelo usuario na tela…