Come posso fare WebFlow abort la transizione e basta visualizzare la pagina precedente quando la validazione fallisce?

StackOverflow https://stackoverflow.com/questions/4024468

  •  26-09-2019
  •  | 
  •  

Domanda

Ho un app primavera WebFlow che mi provoca capelli grigi. Quello che sto cercando di realizzare se la convalida ha esito positivo è quello di mostrare semplicemente la stessa vista con dati diversi. Questo funziona. Tuttavia, quando vengono inseriti dati non validi, voglio mostrare alla vista precedente, ma con i valori errati preriempita ei messaggi di errore dicendo il mio utente come risolvere l'errore precedente. Tuttavia, indipendentemente dal fatto che la convalida ha esito positivo o meno, l'applicazione fa ancora la on-render roba dentro. Dal momento che i valori non sono validi, si blocca la mia app. Come posso fare le cose on-render solo quando la validazione ha successo?

Il mio config sullo stato di visualizzazione sembra un po 'come questo:

<view-state id="mine" model="myModel">
    <var name="myModel" class="com.examplelMyModel" />
    <on-entry>
         <set name="foo" value="bar" />
    </on-entry>
    <on-render>
        <set name="requestScope.stuff" value="stuffService.loadStuff( ... )" />
        <set name="viewScope.otherStuff" value="otherStuffService.loadOtherStuff( requestScope.stuff, myModel.a, myModel.b )" />
    </on-render>
    <transition on="reloadMine" validate="true"/>
</view-state>

I miei sguardi validatore come questo:

public class MyModelValidator{

  ...

    public void validateMine(MyModel myModel, ValidationContext context) {
        Locale currentLocale = LocaleContextHolder.getLocale();

        MessageContext messages = context.getMessageContext();
        DateTime a= new DateTime(myModel.getA());
        DateTime a = new DateTime(myModel.getB()); 
        DateTime now = new DateTime();

        if(a.isAfter(now) || b.isAfter(now)){
            messages.addMessage(new MessageBuilder().error().defaultText(messageSource.getMessage("ohno", null, currentLocale)).build());
        }
    }
}

}

È stato utile?

Soluzione

on-renderizzare viene richiamato quando la pagina viene effettivamente trasmesso indietro per l'utente. Per essere in grado di mostrare eventuali errori di convalida si avrà alla pagina di ri-renderizzare, e così via, il rendering viene richiamato. Non si può mettere insieme quelli di due all'interno del tag on-entry?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top