[JAVA] Notes personnelles de First Play Framework

Play Framework

Articles fréquemment utilisés

dossier d'application

Comment afficher Welcome to Play!

Paramètres de routage dans un fichier appelé routes

(Connectez la combinaison de type de demande et d'URL envoyée du client au serveur à la méthode du programme)

Lorsque vous accédez à la racine (localhost: 9000 par défaut) avec la méthode GET, La méthode ʻindex de la classe HomeController dans le dossier ʻapp / controllers est appelée

conf/routes


GET     /                           controllers.HomeController.index

scala:app/views/index.scala.html


@()

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

Index de modèle d'appel par méthode d'index Exécutez la fonction principale. (Comme argument

  • title: Chaîne "Welcome to Play"
  • content: Html \

    Bienvenue dans Play! Passe) ↓

    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>
    

    Appeler main plus loin par l'index du modèle Pour incorporer la variable passée dans Html, utilisez @variable name.

    Comment coller le lien

    Utilisez les informations décrites dans routes

    routes

    
    GET     /                           controllers.HomeController.index
    
    GET     /assets/*file               controllers.Assets.versioned(path="/public", file: Asset)
    
    GET     /viewtest                   controllers.ViewTestController.index   #Je veux mettre un lien ici
    

    En html

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

    Faire.

    point important

    • Même si vous le placez entre «» », il fonctionne correctement comme modèle Twirl.
    • Dans routes, ce sont des contrôleurs. ~~`, Mais lorsque vous collez le lien, changez-le en routes. ~~

    Comment passer des variables au modèle

    Supposons que vous ayez un modèle comme celui-ci.

    HTML:viewtest_index.scala.html

    
    @(title: String="Fichier créé par moi-même")
    
    @viewtest_main("Fichier créé par moi-même"){
        <h1>@(title+"est")</h1>
    }
    

    J'essaie de recevoir une variable appelée title, mais comme la valeur initiale est définie, le contrôleur

    package controllers
    
    import javax.inject._
    import play.api._
    import play.api.mvc._
    
    @Singleton //Désignation de "tonne unique". Instruction selon laquelle "un seul objet peut être créé à partir de cette classe"
    class ViewTestController @Inject()(cc: ControllerComponents)
      extends AbstractController(cc) { // @Injectez l'instruction à l'intérieur du framework que "cc est fait avec le framework"
    
      def index() = Action { implicit request: Request[AnyContent] =>
        Ok(views.html.viewtest_index())
      }
    }
    

    Cette description est correcte.

    pourtant

    @(title: String="Fichier créé par moi-même")(rnum: Int = 1)
    
    @viewtest_main("Fichier créé par moi-même"){
        <h1>@(title+"est")</h1>
        <p>La fin est@Grande chance pour rnum! !!</p>
    

    De cette manière, si deux variables sont définies dans le modèle et qu'elles ont des valeurs initiales, dans le contrôleur, ** Vous devez dire que vous ne transmettez aucune valeur à l'une des deux variables et laissez la valeur par défaut **. Dans ce cas,

    Ok(views.html.viewtest_index())

    
     Non (une erreur se produit)
    
    #### **`Ok(views.html.viewtest_index()())`**
    

    De cette façon, vous devez écrire deux () (pour le nombre de variables) dans l'appel de méthode pour transmettre l'intention au programme.

    En haut du modèle, dans @ (title: String =" File you created ") (rnum: Int = 1), Le "views.html.viewtest_index () ()" du contrôleur correspond à cela.

    Et même si vous spécifiez la valeur d'une variable à partir du contrôleur sans utiliser la valeur initiale, organisez deux () autant que le nombre de variables.

    Ok(views.html.viewtest_index("Titre transmis par le contrôleur")(5))
    

    Aussi, du côté du modèle, comment recevoir des variables @ (title: String =" Fichier créé par moi-même ", rnum: Int = 1) Si vous les mettez dans un () séparés par des virgules comme ceci, la manière de passer est également ʻOk (views.html.viewtest_index ("titre transmis par le contrôleur", 5) ` De cette façon, il devient "écrire comme une fonction normale".

    ** Doit être utilisé correctement selon la situation ** Comment organiser ()

    • La valeur que vous passez est facile à voir pour les objets de fonction et les blocs HTML </ font>
    • Vous pouvez facilement écrire "Ne pas transmettre de variables" simplement en écrivant () </ font> D'autre part,
    • La compilation prend du temps lorsqu'il y a beaucoup d'arguments </ font>

    Parce qu'il a la particularité.

    Comment écrire une instruction For dans Twirl

    @(title: String= "pour la pratique de la boucle", topics: Array[String])
    
    <ul>
        @for(topic <- topics) {
            <li>@topic</li>
        }
    
    </ul>
    

    L'emplacement de @ est un peu déroutant.