因此,对于演示,我将建立一个非常基本的Twitter副本; 它本来就很简单,但是却显示了Play足够的生产力! 提供。 我将逐步完成设置演示应用程序的步骤,该应用程序应涵盖Heroku博客文章中宣布的内容,但要更深入一些。
第一步,创建应用程序
play new twitter
将依赖性添加到CRUD模块(conf / dependencies.yml)
- play -> crud
获取依赖项
play dependencies
IDE整合
(对于Eclipse)
play eclipsify
(对于IntelliJ)
play idealize
(对于Netbeans)
play netbeansify
创建模型(app / models / Tweet.java)
package models;
import java.util.Date;
import java.util.List;
import javax.persistence.Entity;
import play.data.validation.MaxSize;
import play.data.validation.Required;
import play.db.jpa.Model;
@Entity
public class Tweet extends Model {
@Required
@MaxSize(140)
public String tweet;
@Required
public Date createDate = new Date();
public static List findLatest() {
return Tweet.find(“order by createDate desc”).fetch();
}
@Override
public String toString() {
return this.tweet;
}
}
为JPA模型定义数据库(conf / application.conf)
db=${DATABASE_URL}
添加控制器操作(app / controllers / Application.java)
package controllers;
import java.util.List;
import models.Tweet;
import play.mvc.Controller;
public class Application extends Controller {
public static void index() {
List tweets = Tweet.findLatest();
render(tweets);
}
public static void create(String msg) {
Tweet tweet = new Tweet();
tweet.tweet = msg;
tweet.save();
render(tweet);
}
public static void tweets() {
List tweets = Tweet.findLatest();
renderJSON(tweets);
}
}
定义主视图(app / views / Application / index.html)
#{extends ‘main.html’ /}
#{set title:’Home’ /}
<!– Create Tweet Form –>
<form> <input name=”tweet” type=”text” />
<input type=”submit” value=”Tweet” /> </form><!– Latest Tweets List –>
<ul> #{list tweets}
<li>${_.tweet} (${_.createDate.since()})</li><p><p>
#{/list}</ul>
<!– JS –>
<script type=”text/javascript”>
// Capture Form Submit Event
$(‘form’).submit(function() {
// Define Create Action
var createAction = #{jsAction @create(‘:tweet’) /}
// Call Create Action
$.post(createAction({tweet: $(‘input:first’).val()}), function(data) {
// Prepend Results to the List
$(‘ul’).prepend(data);
$(‘input:first’).val(”);
});
// Don’t let the browser redirect
return false;
});
</script>
定义创建操作视图(app / views / Application / create.html)
<li><code>${tweet.tweet} (${tweet.createDate.since()})</li>
创建推文模型的单元测试
import models.Tweet;
import org.junit.Assert;
import org.junit.Test;
import play.test.UnitTest;
public class TweetTest extends UnitTest {
@Test
public void testModelSave() {
long count = Tweet.count();
Tweet t = new Tweet();
t.tweet = “my sample tweet”;
t.save();
long count2 = Tweet.count();
Assert.assertEquals(count + 1, count2);
}
}
为推特模型创建CRUD管理员
package controllers;
public class Tweets extends CRUD {
}
添加路由(conf / routes)
* /admin module:crud
GET /rest/tweets Application.tweets
为CRUD管理员定义消息(conf / messages)
tweet=Tweet
createDate=Date Created
定义配置文件
web: play run –%$FRAMEWORK_ID –http.port=$PORT -DusePrecompiled=$USE_PRECOMPILED -DDATABASE_URL=mem
在开发中运行
play run –%dev -DusePrecompiled=false -DDATABASE_URL=mem
在Heroku上创建应用程序
heroku create play-twitter –stack cedar
heroku创建推特-堆叠杉
设置Git存储库
git init; git add .; git commit -a -m “Initial Commit”; git remote add heroku git@heroku.com:play-twitter.git
设置Heroku环境变量
heroku config:add FRAMEWORK_ID=prod; heroku config:add USE_PRECOMPILED=true
部署到Heroku
git push heroku master
如果有任何问题,您可以随时检查日志
heroku logs
在Heroku上设置真实数据库
heroku addons:add shared-database
您可以检出现场演示在这里 ,管理界面这里或克隆的源代码Github上 。
参考:我们的JCG合作伙伴 Felipe Oliveira(位于Geek)完全使用 ,其中包含Play框架,AJAX,CRUD和Heroku的简单Twitter逐步指南 。
相关文章 :
翻译自: https://www.javacodegeeks.com/2011/09/simple-twitter-play-framework-ajax-crud.html