ホームページ >Java >&#&チュートリアル >PlayFramework は APP を完全に実装します (8)
创建Tag标签
1.创建Model
@Entity
@Table(name = "blog_tag")public class Tag extends Model 実装 Comparable
public 文字列名。
PRivate Tag(String name) { this.name = name;
}
public String toString() { return name;
}
public int CompareTo(Tag otherTag) { return name.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类追加タグ属性
@ManyToMany(cascade = CascadeType.PERSIST)public設定(&L) ;タグ>タグ;パブリック投稿(ユーザー作成者、文字列タイトル、文字列コンテンツ) {
this.comments = new ArrayList
}
3.Post类追加方法
关联Post和Tag
public Post tagItWith(String name) {
tags.add(Tag.findOrCreateByName(name)) ; return this;
}
戻り关联指定タグのPost集合
public static List
を持つ p.content,p.postedAt ).bind("tags", tags).bind("size", tags.length).fetch();
}
4.写测试用例
@Testpublic void testTags() { // 新しいユーザーを作成して保存します
User bob = new User("bob@Gmail.com", "secret", "Bob").save ();
// 新しい投稿を作成します
Post bobPost = new Post(bob, "最初の投稿", "Hello world").save();
別の投稿BobPost = new Post(bob, "Hop", "Hello world") 。保存();
// さて
assertEquals(0, Post.findTaggedWith("Red").size());
// 今すぐタグ付けします
bobPost.tagItWith("Red").tagItWith("Blue").save();
anotherBobPost.tagItWith("Red").tagItWith("Green").save();
// Check
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()); }
测试タグ
5.继续修正タグ类、追加方法
public static List
6. 页面上にタグを追加します
/yabe/conf/initial-data.yml 追加配置データセット
タグ(再生):
名前: 再生
タグ(アーキテクチャ):
名前: アーキテクチャ
タグ(テスト):
名前: テスト
タグ(mvc) :
名前: MVC
Post(jeffPost): -
- アーキテクチャ
- mvc
content: >
A Play
7.display.htmlを修正tag显示出来
List
}
9.修改display.html,タグ显示
#{リスト項目:_post.tags, としてタグ付けしました:' tag'}
${tag}${tag_isLast ? '' : ', '}#{/list}
10.AddRoute
现在有两条Ro ute规则URL無法区別
GET /posts/{tag} Application.listTagged
{id}追加规则
GET / photos/{id} アプリケーション.show
11.追加投稿リスト页面、同タグ付き投稿
#{set title: ' + タグでタグ付けされた投稿 /}
*{********* タイトル ********* }*
#{if Posts.size()>1} ${tag}タグが付いた投稿は ${posts.size()} 件あります
#{/if}
#{elseif 投稿}
就是PlayFramework完整以上实现一APP(八)的内容,更多相关内容请关注PHP中文网(www.php.cn)!