[JAVA] Persönliche Notizen des First Play Framework

Play Framework

Häufig verwendete Gegenstände

App-Ordner

So zeigen Sie Welcome to Play an!

Routing-Einstellungen in einer Datei namens Routen

(Verbinden Sie die Kombination aus Anforderungstyp und URL, die vom Client an den Server gesendet wird, mit der Programmmethode.)

Wenn Sie mit der GET-Methode auf das Stammverzeichnis zugreifen (standardmäßig localhost: 9000), Die index -Methode der HomeController-Klasse im Ordner app / controller wird aufgerufen

conf/routes


GET     /                           controllers.HomeController.index

scala:app/views/index.scala.html


@()

@main("Welcome to Play") {
  <h1>Welcome to Play!</h1>
  }

Rufen Sie den Vorlagenindex nach Indexmethode auf Führen Sie die Hauptfunktion aus. (Als Argument

  • Titel: String "Welcome to Play"
  • Inhalt: Html \

    Willkommen beim Spielen! Geht vorbei) ↓

    scala:app/views/main.scala.html

    
     *@
    @(title: String)(content: Html)
    
    <!DOCTYPE html>
    <html lang="en">
        <head>
            <title>@title</title>
            <link rel="stylesheet" media="screen" href="@routes.Assets.versioned("stylesheets/main.css")">
            <link rel="shortcut icon" type="image/png" href="@routes.Assets.versioned("images/favicon.png ")">
        </head>
        <body>
            
            @content
    
          <script src="@routes.Assets.versioned("javascripts/main.js")" type="text/javascript"></script>
        </body>
    </html>
    

    Rufen Sie main per Vorlagenindex weiter auf Verwenden Sie "@variable name", um die übergebene Variable in HTML einzubetten.

    So fügen Sie den Link ein

    Verwenden Sie die unter "Routen" beschriebenen Informationen

    routes

    
    GET     /                           controllers.HomeController.index
    
    GET     /assets/*file               controllers.Assets.versioned(path="/public", file: Asset)
    
    GET     /viewtest                   controllers.ViewTestController.index   #Ich möchte hier einen Link setzen
    

    In HTML

    <a href="@routes.ViewTestController.index">view test</a>
    

    Machen.

    wichtiger Punkt

    • Auch wenn Sie es in "" "einschließen, funktioniert es ordnungsgemäß als Twirl-Vorlage.
    • In "Routen" sind es "Controller". ~~ ", aber wenn Sie den Link einfügen, ändern Sie ihn in" Routen ". ~~

    So übergeben Sie Variablen an die Vorlage

    Angenommen, Sie haben eine solche Vorlage.

    HTML:viewtest_index.scala.html

    
    @(title: String="Datei von mir erstellt")
    
    @viewtest_main("Datei von mir erstellt"){
        <h1>@(title+"ist")</h1>
    }
    

    Ich versuche, eine Variable namens title zu erhalten, aber da der Anfangswert festgelegt ist, wird der Controller

    package controllers
    
    import javax.inject._
    import play.api._
    import play.api.mvc._
    
    @Singleton //Bezeichnung "Einzeltonne". Anweisung, dass "nur ein Objekt aus dieser Klasse erstellt werden kann"
    class ViewTestController @Inject()(cc: ControllerComponents)
      extends AbstractController(cc) { // @Injizieren Sie die Anweisung an die Innenseite des Frameworks, dass "cc mit dem Framework erstellt wird".
    
      def index() = Action { implicit request: Request[AnyContent] =>
        Ok(views.html.viewtest_index())
      }
    }
    

    Diese Beschreibung ist in Ordnung.

    jedoch

    @(title: String="Datei von mir erstellt")(rnum: Int = 1)
    
    @viewtest_main("Datei von mir erstellt"){
        <h1>@(title+"ist")</h1>
        <p>Das Ende ist@Große Chance für rnum! !!</p>
    

    Wenn auf diese Weise zwei Variablen in der Vorlage definiert sind und Anfangswerte in der Steuerung haben, ** Sie müssen angeben, dass Sie keinen Wert an eine der beiden Variablen übergeben und den Standardwert belassen **. In diesem Fall,

    Ok(views.html.viewtest_index())

    
     Nicht (ein Fehler tritt auf)
    
    #### **`Ok(views.html.viewtest_index()())`**
    

    Auf diese Weise müssen Sie zwei () (für die Anzahl der Variablen) in den Methodenaufruf schreiben, um die Absicht an das Programm zu übermitteln.

    Oben in der Vorlage in @ (title: String =" Von Ihnen erstellte Datei ") (rnum: Int = 1), Die views.html.viewtest_index () () des Controllers unterstützt es, nicht wahr?

    Und selbst wenn Sie den Wert einer Variablen vom Controller angeben, ohne den Anfangswert zu verwenden, ordnen Sie zwei () so viele wie die Anzahl der Variablen an.

    Ok(views.html.viewtest_index("Titel vom Controller übergeben")(5))
    

    Auf der Vorlagenseite auch, wie Variablen empfangen werden @ (title: String =" Von mir erstellte Datei ", rnum: Int = 1) Wenn Sie sie in ein () setzen, das durch Kommas wie dieses getrennt ist, ist die Art der Übergabe auch Ok (views.html.viewtest_index (" Titel vom Controller übergeben ", 5) Auf diese Weise wird es "Schreiben wie eine normale Funktion".

    ** Muss je nach Situation richtig verwendet werden ** Wie arrangiere ich ()

    • Der übergebene Wert ist für Funktionsobjekte und HTML-Blöcke </ font> leicht zu erkennen
    • Sie können einfach "Variablen nicht übergeben" schreiben, indem Sie einfach () </ font> schreiben Auf der anderen Seite,
    • Das Kompilieren braucht Zeit, wenn es viele Argumente gibt </ font>

    Weil es die Eigenschaft hat.

    So schreiben Sie eine For-Anweisung in Twirl

    @(title: String= "für das Loop-Üben", topics: Array[String])
    
    <ul>
        @for(topic <- topics) {
            <li>@topic</li>
        }
    
    </ul>
    

    Die Position von @ ist etwas verwirrend.