Witam, zgodnie z dokumentacją http://docs.spring.io/autorepo/docs/webflow/2.3.x/reference/html/views.html#view-validate zaimplementowałem sobie metodę walidującą model, jednak nie działa mi ta walidacja. Może ktoś by mi podpowiedział gdzie mam błąd? Obecnie wygląda to tak że przy przejściu z collectShippingDetail do orderConfirmation przepływ działa tak jakby tej walidacji w ogóle nie było.
Klasa której obiekt dodaje do modelu.
public class Order implements Serializable{
private static final long serialVersionUID = -3560539622417210365L;
private Long orderId;
private Cart cart;
public Customer customer;
private ShippingDetail shippingDetail;
// metoda walidująca pole shippingDate Klasy shippingDetail
public void validateCollectShippingDetail(ValidationContext context) {
MessageContext messages = context.getMessageContext();
if (shippingDetail.getShippingDate().equals(19/01/2016)) { ///data przypisana na sztywno do testów
messages.addMessage(new MessageBuilder().error().source("shippingDetail"). /* tutaj jakie źródło powinienem podać takie jak jest czy może shippingDetail.shippingDate? */
defaultText("Check in date must be a future date").build());
}
}
}
Klasa ShippingDetail:
public class ShippingDetail implements Serializable{
private static final long serialVersionUID = 6350930334140807514L;
@NotNull(message="{NotNull.Product.unitPrice.validation}")
private String name;
@DateTimeFormat(pattern = "dd/MM/yyyy")
private Date shippingDate;
....
}
Mój przepływ wygląda tak:
...
<var name="order" class="com.packt.webstore.domain.Order" />
...
<view-state id="collectCustomerInfo" view="collectCustomerInfo.jsp" model="order">
<transition on="customerInfoCollected" to="collectShippingDetail" />
</view-state>
<view-state id="collectShippingDetail" model="order">
<transition on="shippingDetailCollected" to="orderConfirmation" />
<transition on="backToCollectCustomerInfo" to="collectCustomerInfo" />
</view-state>
<view-state id="orderConfirmation">
<transition on="orderConfirmed" to="processOrder" />
<transition on="backToCollectShippingDetail" to="collectShippingDetail" />
</view-state>
.....