2010-11-09 19 views

Odpowiedz

3

Jeden trick można użyć jest dodanie niezbędnych logiki początku swojej metody walidacji, coś jak to (próbki z poradnik):

<view-state id="enterBookingDetails" model="booking"> 
    <transition on="proceed" to="reviewBooking"> 
</view-state> 

public class Booking { 
    private Date checkinDate; 
    private Date checkoutDate; 
    ... 

    public void validateEnterBookingDetails(ValidationContext context) { 
     // do whatever you want to do before attemting validation 
     ... 

     // now do validation 
     ... 
    } 
} 
+1

Czy podpis metody metody sprawdzania poprawności nie jest blokowany przez przepływ sieciowy? A co, jeśli potrzebujesz innych danych do przekazania? –

+0

W tym podejściu projektowanie nie byłoby dobrym połączeniem walidacji i przetwarzania biznesowego – abhi

1

Problem z odpowiedzią klr8 jest, że robisz nie ma żadnych informacji poza tekstem validationContext przekazanym do walidatora. Jeśli potrzebujesz innych informacji z przepływu, można spróbować ręcznie wyzwalać sprawdzanie poprawności:

<transition on="submit" to="isValid" validate="false"> 
    <evaluate expression="someLogicIWantToDo(a,b,c)" /> 
    <evaluate expression="booking.validate(bookingForm, messageContext)"/> 
</transition> 

<decision-state id="isValid"> 
    <if test="messageContext.hasErrorMessages()" then="home" else="page2"/> 
</decision-state> 

Web-flow walidacji metody mogą wziąć albo MessageContext lub ValidationContext. Nie jestem pewien, jak uzyskać dostęp do sprawdzania poprawności kontekstu z Web Flow, aby ręcznie wyzwalać, jeśli metody sprawdzania poprawności mają wzorzec validationContext.

Powiązane problemy