[JAVA] Validierungsfunktion in Play Framework

In diesem Beitrag möchte ich über die Implementierung der Validierungsfunktion mit Play Framework schreiben. Die Quelle finden Sie unter GitHub.

Zweck

Realisieren der Validierungsfunktion mithilfe der Teile von Play Framework. Ich möchte die Eingabeelemente auf dem Formularbildschirm überprüfen und eine Fehlermeldung auf dem Bildschirm anzeigen, wenn die Eingabeelemente ungültig sind.

Umgebung

validation Die Validierungsfunktion ist für Webanwendungen unverzichtbar, um die Gültigkeit der vom Bildschirm eingegebenen Daten zu überprüfen. Viele Frameworks sind mit Teilen ausgestattet, die standardmäßig die Realisierung von Validierungsfunktionen unterstützen, und es gibt auch hochfunktionale und praktische Teile in Play Framework. Ich habe sie verwendet, um die Validierungsfunktion zu implementieren. Die Dateistruktur ist wie folgt.

PlayValidation
    ├── app
    │   ├── checks
    │   │   ├── Check.java
    │   │   ├── IndexCheck.java
    │   │   └── unit
    │   │       ├── EqualsCheck.java
    │   │       ├── ManagerLimitCheck.java
    │   │       └── UnitCheck.java
    │   ├── common
    │   │   └── constants
    │   │       └── Job.java
    │   ├── controllers
    │   │   └── AppController.java
    │   ├── forms
    │   │   └── IndexForm.java
    │   └── views
    │       ├── formTable.scala.html
    │       ├── index.scala.html
    │       ├── main.scala.html
    │       └── tableRowInput.scala.html
    ├── conf
    │   ├── messages
    │   └── routes
    └── public
        └── stylesheets
            └── main.css

Grundsätzlich ist es die Standardkonfiguration von Play, aber ich habe ein Paket namens "Checks" erstellt und versucht, eine Datenüberprüfungslogik zu haben, die nicht durch Anmerkungen erfasst werden kann.

Dieses Mal möchte ich auf Form und Ansicht eingehen.

Form Forms hat eine Form-Klasse. Andere Frameworks können einzelne Elemente einfach durch Hinzufügen von Anmerkungen zu den Formularparametern überprüfen. Play hat jedoch eine ähnliche Funktion. Es gibt ein Paket namens play.data.validation.Constraints, mit dem Sie obligatorische Überprüfungen, Überprüfungen der Zeichenanzahl, Überprüfungen regulärer Ausdrücke usw. durchführen können, sodass die Überprüfung auf ein einzelnes Element fast abgeschlossen ist. Ich habe IndexForm.java mit Elementen erstellt, die wahrscheinlich häufig vorkommen.

IndexForm.java


public class IndexForm {
	
	/**Name*/
	@Required
	public String name;
	
	/**Alter*/
	@Required
	@Min(value=15, message="Bitte geben Sie mindestens 15 Jahre alt ein")
	@Max(value=55, message="Bitte geben Sie unter 55 Jahre alt")
	public Integer age;
	
	/**Mail Adresse*/
	@Required
	@Email
	public String email;
	
	/**Passwort*/
	@Required
	@MinLength(6)
	@MaxLength(10)
	@Pattern(value="^[0-9a-zA-Z]*$", message="Bitte geben Sie nur alphanumerische Zeichen ein")
	public String password;
	
	/**Kennwort erneut eingeben*/
	public String againPassword;
	
	/**Beruf*/
	@Required(message="Muss ausgewählt werden")
	public String job;

	/**
	 *Gültigkeitsprüfung der Eingabedaten
	 * @Fehlerinformationen zurückgeben
	 */
	public List<ValidationError> validate(){
		List<ValidationError> errors = new ArrayList<>();
		IndexCheck check = new IndexCheck();
		check.execute(this, errors);
		return errors;
	}

}

Die Methode * validate () wird aufgerufen, wenn ein Eingabewert an ein Formular gebunden wird, und implementiert eine Validierungsvalidierung, die nicht durch Annotation erfasst wurde. Checks ist eine originelle Implementierung, die nichts mit den Play Framework-Funktionen zu tun hat. Ich werde sie in diesem Beitrag nicht behandeln. Wenn Sie jedoch Zeit haben, schauen Sie sie sich bitte an und verwenden Sie sie als Referenz (oder als Hinweis). * *

Jeder Annotationseffekt ist wie folgt

Es gibt noch andere nützliche Dinge, daher ist es eine gute Idee, sich Constraints anzusehen. Es ist jedoch sehr praktisch, dass die Validierung für ein einzelnes Element genau damit implementiert werden kann. Die Nachricht, die Sie ausgeben möchten, wenn ein Anmerkungsfehler auftritt, wird in einer externen Datei definiert. Dies ist conf / messages. Diejenigen, die ein Argument übergeben, haben ihre annotationsspezifischen Einstellungen.

conf/messages


error.required =Erforderlich
error.invalid =Bitte geben Sie das richtige Format ein
error.max = {0}Bitte geben Sie nach Alter ein
error.email =Geben Sie bitte Ihre Email-Adresse ein
error.minLength = {0}Bitte geben Sie mehr als Zeichen ein
error.maxLength = {0}Bitte geben Sie unter den Zeichen ein

Auf diese Weise können Sie die Nachricht standardmäßig definieren. Wenn Sie keine Argumente übergeben, verwenden Sie diese Fehlermeldung. Wenn es hier nicht definiert ist, wird die in Play standardmäßig definierte Nachricht verwendet. error.invalid ist eine Fehlermeldung, wenn der Eingabewert aufgrund eines falschen Typs nicht an den Form-Parameter gebunden werden kann und fehlschlägt.

View In Play Framework spielt das sogenannte dynamische HTML namens scala.html die Rolle des Ansichtsteils. Unten finden Sie index.scala.html, das nur die Eingabe-Tags des Formulars mit Tabellen-Tags anordnet. ..

scala:index.scala.html


@(playForm: Form[forms.IndexForm])

@import collection.JavaConversions._
@import helper._

@main("Validation Test") {
    <h1>Formularbildschirm</h1>
    @form(action = routes.AppController.post()) {
        @formTable{
            @inputText(
                playForm("name"),
                '_label -> "Name"
            )(tableRowInput, implicitly[Messages])

            @inputText(
                playForm("age"),
                '_label -> "Alter",
                'placeholder -> "15-55 Jahre alt"
            )(tableRowInput, implicitly[Messages])

            @inputText(
                playForm("email"),
                '_label -> "Mail Adresse"
            )(tableRowInput, implicitly[Messages])

            @inputPassword(
                playForm("password"),
                '_label -> "Passwort",
                'placeholder -> "Nur Alphabet"
            )(tableRowInput, implicitly[Messages])

            @inputPassword(
                playForm("againPassword"),
                '_label -> "Kennwort erneut eingeben"
            )(tableRowInput, implicitly[Messages])

            @select(
                playForm("job"),
                options = common.constants.Job.getMap().toSeq,
                '_label -> "Beruf"
            )(tableRowInput, implicitly[Messages])

        }
        <button>Senden</button>
    }
}

Play hat ein views.html.helper-Paket, das HTML-Tags ziemlich gut generiert. Weitere Informationen zum Helfer finden Sie auf der Offiziellen Seite. Mithilfe von Helper können Sie es auf der Java-Seite problemlos mit Form verknüpfen. Es gibt eine Standardeinstellung für die vom Helfer generierte Vorlage, aber hier wollte ich das Tabellen-Tag ausgeben, also tableRowInput. Ich habe meine eigene tableRowInput.scala.html) erstellt und als Vorlage verwendet.

Funktionsprüfung

Jetzt möchte ich den Server tatsächlich ausführen und den Bildschirm sehen. スクリーンショット 2017-03-19 12.34.16.png

Klicken Sie auf die Schaltfläche "Senden" スクリーンショット 2017-03-19 12.34.16.png

Die Meldung wird ordnungsgemäß angezeigt.

Zusammenfassung

Sie müssen nicht unbedingt die Funktionalität des Frameworks verwenden, aber angesichts der Produktivität und Wartung sollten Sie die Funktionalität des Frameworks so weit wie möglich übernehmen. Vielmehr verstehe ich die Bedeutung der Verwendung des Frameworks nicht, ohne die Funktionen des Frameworks zu verwenden. Wenn Sie ein Ingenieur sind, der Play für neue Entwicklungen einsetzt, möchte ich, dass Sie unter Nutzung der Funktionen von Play entwerfen.

GitHub

Recommended Posts

Validierungsfunktion in Play Framework
Authentifizierungsfunktion mit Play Framework [Zugriffsbeschränkungen]
Spielen Sie die Framework 2.6 (Java) -Umgebungskonstruktion mit Eclipse
Authentifizierungsfunktion mit Play Framework [Registrierung und Authentifizierung]
Spielen Sie die Framework-Studie
Behandeln Sie JSON domänenübergreifend mit Play Framework
Spielen Sie den Framework-Lerntest
spielen Framework persönliche Notizen
Implementieren Sie die Anwendungsfunktion in Rails
Play Framework Study Memo Database ①
Java zum Spielen mit Function
Informationen zu Validierungsmethoden in JUnit
Persönliche Notizen des First Play Framework
Einführung von Dozer to Play Framework
Wenn die Submodul-Assets nicht im Play Framework gefunden werden
Play Framework Study Memo Database ②Lesen
Fügen Sie eine Suchfunktion in Rails hinzu.
[Rails] Unerwarteter Validierungsfehler im Gerät
Erstellung der Play Framework 2.6 (Java) -Entwicklungsumgebung
Spielen Sie das Framework Study Momo DB Update
Implementieren Sie eine einfache Anmeldefunktion in Rails
Implementieren Sie die PHP-Implodierungsfunktion in Java
Implementieren Sie die CSV-Download-Funktion in Rails
Tweak Markdown mit Java Flexmark-Java
Fehler bei der Implementierung der Tagging-Funktion
Implementierung einer ähnlichen Funktion in Java