Boa tarde,
estou com um problema aqui, que contando ninguém acredita. Em meu projeto estou usando no geral: Spring Security, Spring MVC, JPA com Hibernate, JSP, Bootstrap.
Tenho um formulário no qual o usuário digita dados de uma oportunidade de negócios, campos que usamos sempre no cotidiano: nome, campanha, data de inicio, valor, gerente de conta etc etc.
Fiz um formulário e até aí tudo bem. Mas quando chamo o método de salvar que está em um CONTROLLER, passando a variável do “form” como parâmetro usando @ModelAttribute, simplesmente no atributo nome ele está juntando os dados com o valor digitado em outro campo. Ex:
- no campo nome eu digito “teste”
- no campo origem campanha eu digito “CAMPANHA TESTE”
Quando eu vou verificar os dados usando o DEBUG, o atributo nome contém “teste, CAMPANHA TESTE” e o atributo campanha contem null.
Coloquei classe e o pedaço do controller e duas imagens no anexo. Alguém pode me ajudar?
@Entity
public class Oportunidade implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@ManyToOne
private Conta conta;
@ManyToOne
private Profile gerenteConta;
@OneToMany(mappedBy = "oportunidade")
private List<Atividade> atividadeList;
@OneToMany(mappedBy = "oportunidade")
private List<Cotacao> cotacaoList;
@OneToMany(mappedBy = "oportunidade")
private List<Levantamento> levantamentoList;
@Column(nullable = true, length = 1)
private String estrategica;
@Column(nullable = false, length = 120)
private String nome;
@Column(nullable = true, length = 60)
private String campanha;
@Column(nullable = true, length = 60)
private String representada;
@Column(nullable = true, length = 60)
private String linhaProdutos;
@Enumerated(EnumType.STRING)
@Column(nullable = false, length = 20)
private StatusOportunidadeEnum status;
@Column(nullable = true)
@Temporal(TemporalType.DATE)
@DateTimeFormat(pattern = "dd/MM/yyyy")
private Date dataPagemento;
@Column(nullable = true)
@Temporal(TemporalType.DATE)
@DateTimeFormat(pattern = "dd/MM/yyyy")
private Calendar dataAbertura;
@Column(nullable = true, length = 60)
private String proximaEtapa;
@Column(nullable = true)
private BigDecimal probabilidade;
@Column(nullable = true)
@Temporal(TemporalType.DATE)
@DateTimeFormat(pattern = "dd/MM/yyyy")
private Calendar dataPagamentoRepresentada;
@Column(nullable = true, length = 1)
private String possuiConcorrente;
@Column(nullable = true, length = 1)
private String necessitaPoc;
@Column(nullable = true)
@Temporal(TemporalType.DATE)
@DateTimeFormat(pattern = "dd/MM/yyyy")
private Calendar dataInicioProjeto;
@Column(nullable = true)
@Temporal(TemporalType.DATE)
@DateTimeFormat(pattern = "dd/MM/yyyy")
private Calendar dataFechamento;
@Column(nullable = true, length = 120)
private String razaoPerda;
@Column(nullable = true, length = 120)
private String concorrente;
@Column(nullable = true, length = 120)
private String obsPerda;
@Column(nullable = true)
private BigDecimal valorServicos;
@Column(nullable = true)
private BigDecimal valorRenovacao;
@Column(nullable = true)
private BigDecimal valorManutencao;
@Column(nullable = true)
private BigDecimal valorObjetivo;
@Column(nullable = true)
private BigDecimal valorDescontos;
@Column(nullable = true)
private BigDecimal valorLiquido;
@Column(nullable = true, length = 255)
private String observacao;
@Column(nullable = false, length = 120)
private String criadoPor;
@Column(nullable = false)
@Temporal(TemporalType.TIMESTAMP)
private Calendar criadoEm;
@Column(nullable = true, length = 120)
private String modificadoPor;
@Column(nullable = true)
@Temporal(TemporalType.TIMESTAMP)
private Calendar modificadoEm;
@RequestMapping("/adicionarOportunidade")
public String addOportunidade(HttpSession httpSession, @ModelAttribute("oportunidade") Oportunidade oportunidade) {
if (valid()) {
oportunidade.setCriadoEm(Calendar.getInstance());
oportunidade.setCriadoPor(usuarioLogado.getProfile().getUserName());
oportunidadeService.inserirOportunidade(oportunidade);
Conta tmpConta = new Conta();
tmpConta = contaService.getContaById(oportunidade.getConta().getId());
if (tmpConta.getStatus().toString() == "Nova") {
tmpConta.setStatus(StatusContaEnum.Prospect);
contaService.updateConta(tmpConta);
}
return "redirect:showOportunidades";
} else {
return null;
}
}
Obrigado pela ajuda.