In diesem Beitrag möchte ich über die Implementierung der Validierungsfunktion mit Play Framework schreiben. Die Quelle finden Sie unter GitHub.
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.
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.
Jetzt möchte ich den Server tatsächlich ausführen und den Bildschirm sehen.
Klicken Sie auf die Schaltfläche "Senden"
Die Meldung wird ordnungsgemäß angezeigt.
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.
Recommended Posts