Wie verwende ich das GWT-Editor-Framework zur Validierung?
Ich versuche mich zu integrieren, mit dem neuen GWT Editor framework von GWT 2.1.0. Ich möchte auch hinzufügen meine Prüfungen in den Rahmen. Aber ich bin kämpfen, um zu finden, ein anständiges Beispiel, wie dies zu tun.
Im moment habe ich den folgenden code:
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:e="urn:import:com.google.gwt.editor.ui.client">
<ui:with type="be.credoc.iov.webapp.client.MessageConstants"
field="msg" />
<g:HTMLPanel>
<e:ValueBoxEditorDecorator ui:field="personalReference">
<e:valuebox>
<g:TextBox />
</e:valuebox>
</e:ValueBoxEditorDecorator>
</g:HTMLPanel>
</ui:UiBinder>
Und für meine editor:
public class GarageEditor extends Composite implements Editor<Garage> {
@UiField
ValueBoxEditorDecorator<String> personalReference;
interface GarageEditorUiBinder extends UiBinder<Widget, GarageEditor> {
}
private static GarageEditorUiBinder uiBinder = GWT.create(GarageEditorUiBinder.class);
public GarageEditor() {
initWidget(uiBinder.createAndBindUi(this));
}
}
An welchem Punkt muss ich rufe meine Prüfung und wie integriere ich die?
Update:
Ich bin eigentlich auf der Suche nach einem Weg, um eine Karte abrufen mit als Schlüssel die Eigenschaft path und als Wert den editor. Es ist ein Pfad-Feld auf einen Delegierten, aber dies ist nicht der Weg in das bearbeitete Objekt, aber der Weg in die editor-Klasse.
Weiß jemand, ob es möglich ist, so etwas zu tun?
InformationsquelleAutor der Frage Jan | 2010-11-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kommentieren Sie die Bohnen mit contstrants (siehe Person.java)
Verwenden Sie den standard-bootstrap-Validierung zu erhalten, die eine Prüfung auf dem client und überprüfen Sie Ihr Objekt (siehe ValidationView.java)
Folgen diesem Muster zu erstellen, eine Prüfung für die Objekte, die Sie überprüfen möchten, auf dem client. (siehe SampleValidatorFactory.java)
Gehören das Modul für den Validation-Provider. Fügen Sie ersetzen-mit-tag in Ihrem gwt modle Datei sagen, GWT zu verwenden, der Validator, die Sie gerade definiert haben (siehe Validation.gwt.xml)
Quelle
InformationsquelleAutor der Antwort Antonio
Habe ich etwas getan, ähnlich wie dies durch hinzufügen eines zusätzlichen DriverWrapper Klasse, das die vorhandenen Treiber und Validator und fügt eine Methode flush, die ersten Delegierten auf den zugrunde liegenden Treiber flush und ruft dann die Bestätigung. Alle gefundenen Fehler werden anschließend Hinzugefügt, um die Redaktion mit einem neuen Besucher, auf ähnliche Weise, wie die vorhandenen Flusher funktioniert. Dies bedeutet, dass die existierende Dekoratoren, die Anzeige der Fehler weiter, um die Felder weiter zu arbeiten.
InformationsquelleAutor der Antwort Jon Denly
Ich habe genau das gleiche problem.
Ist die Dokumentation nicht klar darüber.
Was ich gerade zu tun ist, neu zu erstellen, einige widgets, indem Sie Sie zu erweitern mit widgets will ich kopieren. Nachdem ich es umsetzen LeafValueEditor und HasEditorDelegate überschreiben getValue().
In der getValue(), verwenden Sie die eigene Prüfung und rufen, wenn nötig yourDelegate.recordError().
Etwas wie dieses: eine kleine integer-box, die überprüfen, dass der Wert nicht größer als 10.
Der beste Ansatz ist, fügen Sie einfach eine benutzerdefinierte überprüfung auf vorhandene widgets und nicht überschrieben, aber ich weiß nicht, wie es zu tun !
InformationsquelleAutor der Antwort Jerome Cance
Validierung existiert nicht in GWT noch, es kommt in der nächsten Version, soweit ich weiß. Die aktuelle Unterstützung für die Validierung in GWT ist server-side-JSR-303-und client-Seite JSR-303-Unterstützung wird bald kommen. Daher müssen Sie die überprüfung manuell. Wenn Sie Folgen Sie den MVP-Modell, ich denke, das Validierungslogik Leben würden, in Ihrer Moderation.
InformationsquelleAutor der Antwort Arthur Maltson
Es ist etwas chaotisch, aber um den Pfad eines Editors, der Sie umsetzen konnte HasEditorDelegate (die geben Ihnen Zugang zu der Delegierte) und dann warf der Delegierte AbstractEditorDelegate, die einen public String getPath () - Methode.
Ich glaube nicht, dass es möglich ist, externe Validierung: die Validierung geschieht im editor an der Stelle, dass ein Wert gelesen wird aus dem Feld (siehe ValueBoxEditor - dieser editor verwendet getDelegate().recordError, um einen Fehler auszulösen). Eine option die ich in Betracht zogen, war der Einsatz der AbstractEditorDelegate Zugriff auf Anruf-flushErrors(Liste) zu erstellen, die Liste der EditorErrors mich. Das zu tun, müssen Sie wissen, jede in Ihrem Bereich-Pfade; hardcoding Sie ist kaum wünschenswert, aber ich sehe nicht ein Weg, sucht sich das Feld durch die bearbeitete Eigenschaft oder etwas ähnliches.
Einen alternativen Ansatz, der möglicherweise zu tragen suchen, ist diese Vorlage für die round-trip-Validierung mit der requestfactory:
http://groups.google.com/group/google-web-toolkit-contributors/browse_thread/thread/5be0bda80547ca5a
InformationsquelleAutor der Antwort Jon Vaughan