recherche
MaisonJavajavaDidacticielPlayFramework implémente complètement une APP (8)

创建Tag标签

 

1.创建Model

@Entity
@Table(name = "blog_tag")public class Tag extends Model implémente Comparable {
   public String name ;    
   Balise privée (nom de chaîne) {        this.name = nom;
   }    
   public String toString() {        return name;
   }    
   public int compareTo(Tag otherTag) {       renvoie le nom. compareTo(otherTag.name);
   }
   public static Tag findOrCreateByName(String name) {
       Tag tag = Tag.find("byName", name).first();        if(tag == null) {
           tag = new Tag(name);
       }        return tag;
   }}

 

2.Post类添加Tag属性

@ManyToMany(cascade = CascadeType.PERSIST)public Set tags;public Post (Auteur de l'utilisateur, Titre de la chaîne, Contenu de la chaîne) {
       this.comments = new ArrayList();        this.tags = new TreeSet();        this.author = auteur ;        this.title = titre ;        this.content = contenu ;        this.postedAt = new Date();
}

 

3.Post类添加方法

关联Post和Tag

public Post tagItWith(String name) {
       tags.add(Tag.findOrCreateByName(name));        renvoie ceci ;
}

  

返回关联指定Tag的Post集合

liste statique publique findTaggedWith(String... tags) {        return Post.find(                "sélectionnez p distinct de Post p joignez p.tags comme t où t.name dans (:tags) groupez par p.id, p.author, p.title, p.content,p.postedAt ayant count(t.id) = :size"
       ).bind("tags", tags).bind("size", tags.length).fetch();
}

 

4.写测试用例

@Testpublic void testTags() {        // Créer un nouvel utilisateur et l'enregistrer
       Utilisateur bob = new Utilisateur("bob@Gmail.com", "secret", "Bob").save();    
       // Créer un nouveau message
       Post bobPost = new Post(bob, "Mon premier message", "Bonjour tout le monde").save();
       Publier un autreBobPost = new Post(bob, "Hop" , "Bonjour tout le monde").save();        
       // Eh bien
       assertEquals(0, Post.findTaggedWith("Red").size());        
       // Marquez-le maintenant
       bobPost.tagItWith("Red").tagItWith("Blue").save();
       anotherBobPost.tagItWith("Red").tagItWith("Green"). sauvegarder();        
       // Vérifiez
       assertEquals(1, Post.findTaggedWith("Red", "Blue").size());  
       assertEquals(1, Post.findTaggedWith("Red", "Green").size());  
       assertEquals(0, Post.findTaggedWith("Red", "Green", "Blue").size());  
       assertEquals(0, Post.findTaggedWith("Green", "Blue").size());   }

测试Tag

 

 5.继续修改Tag类,添加方法

Liste statique publique getCloud() {
       Liste result = Tag.find(            "sélectionnez une nouvelle carte (t.name comme tag, count(p.id) comme livre) à partir de Post p joins p.tags as t group by t.name order by t.name"
       ) .aller chercher();        retourner le résultat ;
}

 

6.将Tag添加到页面上

/yabe/conf/initial-data.yml 添加预置数据

Tag(play):
   nom:           Play

Tag(architecture):
   nom:           Architecture

Tag(test):
   nom:           Test

Tag(mvc):
   name:           MVC

Post(jeffPost):
   title:          L'application MVC
   postedAt :       2009-06-06
  auteur :         Jeff
                   Une pièce


  

7.修改display.html将tag显示出来




  

8.添加listTagged 方法(Application Controller)
点击Tagged,显示所有带有Tag的Post列表

public static void listTagged(String tag) {

   List posts = Post.findTaggedWith(tag);

   render(tag, posts);

}


 

9.修改display.html,Tag显示

- Tagué

#{list items:_post.tags, as:'tag'}

   ${tag} ${tag_isLast ? '' : ', '}

#{/list}


  

10.添加Route

GET     /posts/{tag}                    Application.listTagged

  

现在有两条Route规则URL无法区分

GET     /posts/{id}                            Application.show

OBTENIR     /posts/{tag} Application.listTagged

为{id}添加规则


GET     /posts/{id}                 Application.show

  

11.添加Post list页面,有相同Tag的Post

创建/app/views/Application/listTagged.html

#{extends 'main.html ' /}

#{set title:'Messages marqués avec ' tag /}

*{********* Titre ********* }*

#{if posts.size()>1}

Il y a ${posts.size()} messages tagués ${tag}


#{/if}
#{elseif posts}
   

Il y a 1 message tagué '${tag}'

 
#{/elseif}
#{else}
   

Aucun message tagué '${tag}'


#{/else}

*{********* Liste des messages ********}*
   
#{lister les éléments : posts, as : 'post'>
#{afficher le post :post, as :'teaser' /}
#{/list}



  

 
效果:

PlayFramework implémente complètement une APP (8) 以上就是PlayFramework完整实现一个APP(八)的内容,更多相关内容请关注PHP中文网(www.php.cn)! 

PlayFramework implémente complètement une APP (8)

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Version Mac de WebStorm

Version Mac de WebStorm

Outils de développement JavaScript utiles

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

DVWA

DVWA

Damn Vulnerable Web App (DVWA) est une application Web PHP/MySQL très vulnérable. Ses principaux objectifs sont d'aider les professionnels de la sécurité à tester leurs compétences et leurs outils dans un environnement juridique, d'aider les développeurs Web à mieux comprendre le processus de sécurisation des applications Web et d'aider les enseignants/étudiants à enseigner/apprendre dans un environnement de classe. Application Web sécurité. L'objectif de DVWA est de mettre en pratique certaines des vulnérabilités Web les plus courantes via une interface simple et directe, avec différents degrés de difficulté. Veuillez noter que ce logiciel

Dreamweaver Mac

Dreamweaver Mac

Outils de développement Web visuel