创建Tag标签
1.创建Model
@Entity
@Table(name = "blog_tag")public class Tag erweitert Model implementiert Comparable {
public String name;
PRivate Tag(String name) { this.name = name;
}
public String toString() { return name;
}
public int CompareTo(Tag otherTag) { re Namen drehen. 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
this.comments = new ArrayList
}
3.Post类添加方法
关联Post和Tag
öffentlicher Beitrag tagItWith(String name) {
tags.add(Tag.findOrCreateByName(name)); return this;
}
返回关联指定Tag的Post集合
public static List
).bind("tags", tags).bind("size", tags.length).fetch();
}
4.写测试用例
@Testpublic void testTags() { // Erstellen Sie einen neuen Benutzer und speichern Sie ihn
Benutzer bob = neu User("bob@Gmail.com", "secret", "Bob").save();
// Einen neuen Beitrag erstellen
Post bobPost = new Post(bob, "My first post", "Hello world").save();
Post anotherBobPost = new Post(bob, "Hop" , „Hallo Welt“).save();
// Nun ja
assertEquals(0, Post.findTaggedWith("Red").size());
// Tag it now
bobPost.tagItWith("Red").tagItWith("Blue").save();
anotherBobPost.tagItWith("Red").tagItWith("Green"). speichern();
// Prüfen
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类,添加方法
public static List
6.将Tag添加到页面上
/yabe/conf/initial-data.yml 添加预置数据
Tag(play):
Name: Play
Tag(architecture):
name: Architecture
Tag(test):
name: Test
Tag(mvc):
Name: MVC
Beitrag(jeffPost):
Titel: Die MVC-Anwendung
gepostet am: 2009-06-06
Autor: jeff
tags:
- spielen
- Architektur
- mvc
Inhalt: >
Ein Stück
7.修改display.html将tag显示出来
8. 添加 ListTagged 方法 (Anwendungscontroller)
点击 markiert , 显示 所有 带有 Tag 的 Post 列表
public static void Listagged (String -Tag) {🎜> list & lt; Beitrag> posts = Post.findTaggedWith(tag);
render(tag, posts);
}
- Tagged
#{list items:_post.tags, as:'tag'}
${tag} ${tag_isLast ? '' : ', '}
#{/list}
GET /posts/{tag} Application.listTagged
#{set title:'Beiträge getaggt mit ' + Tag /}
*{*********** Titel ********* }*
#{if posts.size()>1}
效果:
以上就是PlayFramework完整实现一个APP(八)的内容,更多相关内容请关注PHP中文网(www.php.cn)!