Maison > Java > javaDidacticiel > PlayFramework implémente complètement une APP (8)

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

黄舟
Libérer: 2016-12-23 16:44:17
original
1251 Les gens l'ont consulté

创建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)

Étiquettes associées:
app
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal