Boa noite.
Estou tentando validar os campos Impresso, E-book e Combo. Já faz um certo tempo que estou tentando e até agora nada...Na verdade esta validando mas as mensagens não estão aparecendo na tela para o usuário.
O código que desenvolvi foi este:
int i = 0;
for (Price price: product.getPrices()) {
if (price.getValue() == null) {
errors.rejectValue("prices[" + i + "].value", "field.required");
} else if (price.getValue().doubleValue() <= 0) {
errors.rejectValue("prices[" + i + "].value", "field.value.invalid");
}
i++;
}
Este é o meu formulário (apenas a parte onde os preços devem ser inseridos)
<c:forEach items="${priceTypes}" var="priceType" varStatus="status">
<div>
<form:label path="prices" for="${priceType}">${priceType}</form:label>
<form:input path="prices[${status.index}].value" id="${priceType}" />
<form:hidden path="prices[${status.index}].type" value="${priceType}" />
<form:errors path="prices" />
</div>
</c:forEach>
Aparentemente eu não estou conseguindo pegar os campos individualmente, pois se eu deixar o código como abaixo funciona, só que todos os inputs iterados com o <c:foreach> no meu formulário ficam com a mensagem de validação (é exibida 3 x a mensagem de campo obrigatório, mesmo que um dos campos esteja preenchido corretamente).
errors.rejectValue("prices", "field.required")
Ah, e tem alguma forma mais organizada de implementar essa validação, sem ter que ficar colocando vários Ifs no código?