Tag: playframework

用于在Java Play中测试的HTTP上下文! 2.0.2

我们正在尝试为视图编写测试,但其中一些需要会话变量才能正确呈现。 这是标准测试的样子: @Test public void indexTest() { running(fakeApplication(), new Runnable() { public void run() { Content html = views.html.index.render(loginForm); assertThat(contentType(html)).isEqualTo(“text/html”); assertThat(contentAsString(html)).contains(“log in”); } }); } loginForm是我们在测试类中声明的模拟表单。 但是,当我们尝试运行此测试时,我们会收到以下错误: ‘这里没有可用的HTTP上下文’ 我们尝试使用testServer并尝试从请求到该服务器获取http上下文,但无济于事。 谢谢 :-) 编辑 @nico_ekito 这是我的loginForm周围的代码: Form loginForm = Controller.form(Login.class); 但是,我认为问题在于被调用的控制器,因为视图不使用任何会话属性。 然而,authenticate()方法(在控制器中,我相信当表单提交到视图时)会使用会话。

播放框架和jdbc阻止io调用是否存在主要的扩展限制

我正在使用playframework(2.4)for Java并将其连接到Postgres。 play框架被用作一个宁静的服务,它所做的就是使用JDBC进行插入,更新,读取和删除。 在这个播放页面https://www.playframework.com/documentation/2.3.x/JavaAsync上,它明确指出JDBC是阻塞的,并且该播放的线程很少。 对于那些了解这一点的人来说,这是多么有限,是否有某些方法可以解决这个问题? 我的特定应用程序每秒可以有几百个数据库调用。 我将拥有所有硬件和额外的服务器,但不知道播放如何处理这个或扩展以在代码中处理这个。 我的游戏代码如下: public static Result myprofile() { DynamicForm requestData = Form.form().bindFromRequest(); Integer id = Integer.parseInt(requestData.get(“id”)); try { JSONObject jo = null; Connection conn = DB.getConnection(); ResultSet rs; JSONArray ja = new JSONArray(); PreparedStatement ps = conn.prepareStatement(“SELECT p.fullname as fullname, s.post as post,to_char(s.created_on, ‘MON DD,YYYY’) as created_on,s.last_reply as last_reply,s.id as […]

如何使用通用存储库包装Play / JPA的Model类?

我不喜欢直接使用模型对象,因为这打破了封装。 相反,我更喜欢存储库模式 。 当我尝试实现一个简单的存储库时 public abstract class BaseRepository { public T findOne(String query, Object… params) { GenericModel.JPAQuery result = T.find(query, params); return result.first(); } } public class UserRepository extends BaseRepository{} UserRepository repo = new UserRepository(); repo.findOne(“byUsername”, “test”); 由于java的generics或JPA注释的工作方式,我得到了exception: java.lang.UnsupportedOperationException: Please annotate your JPA model with @javax.persistence.Entity annotation. at play.db.jpa.GenericModel.find(GenericModel.java:269) at repositories.BaseRepository.findOne(BaseRepository.java:12) 有没有解决的办法? (不用说模型是正确注释的,当我直接使用它时说User.find(“byUsername”, “test”).first()运行良好)。

为什么在java中你不需要创建这些json读/写?

如果我错了,请纠正我,但是当使用Java而不是Spring MVC时,您不必创建这些额外的类来将Java类映射到JSON,将JSON映射到类。 你为什么要在Play with Scala中这样做? 它与Scala有关吗? case class Location(lat: Double, long: Double) implicit val locationWrites: Writes[Location] = ( (JsPath \ “lat”).write[Double] and (JsPath \ “long”).write[Double] )(unlift(Location.unapply)) implicit val locationReads: Reads[Location] = ( (JsPath \ “lat”).read[Double] and (JsPath \ “long”).read[Double] )(Location.apply _)

scala和java中的枚举器vs迭代器

Enumerator和Iterator有什么区别? 根据我的理解, Enumerator不是Java中enum的精美别名。 相反,它似乎是一种类似于Iterator的遍历技术。 那么有人能够比较和对比Enumerator和Iterator吗? 另外,我在Play看到了一种用法 val data = getDataStream val dataContent: Enumerator[Array[Byte]] = Enumerator.fromStream(data) 编辑: 我倾向于认为Enumerator为我们提供了实际的数据块,而Iterator给出了指向已经分块的数据的指针,例如列表。 但我不相信那是这样的。

如何在Play Framework中更改模板引擎?

我如何在Play中更改模板引擎! 与默认的引擎不同的引擎? 你能给我举个例子吗?

创建会话和cookie之间的区别?

我在Play的第一个网站上工作! 框架,有一次我在用户登录时调用此方法: static void connect(User user){ session.put(“userid”, user.id); } 只需将用户ID存储在会话中,我就可以检查它是否在每个请求上设置,工作正常。 问题是,一旦浏览器关闭,cookie就会丢失,用户需要再次登录。 我想创建一个“记住我”选项,似乎唯一的方法是创建一个cookie并将其与响应一起发送,如下所示: response.setCookie(“user”, userdata, “14d”); 所以我想知道,创建一个会话有什么意义,当它做同样的事情时? (但不会让我对cookie时间有任何控制权)。 还有一件我还没有找到的,就是如何从请求中读取cookie? (而且我知道使用setCookie创建的cookie未加密,我需要调用Crypto.sign() )

玩! Framework 2.2.0:无法在Eclipse中进行调试

我正在尝试使用Eclipse(Kepler)在Play中调试我的unit testing! 项目。 我启动了play debug 。 在Eclipse中,我使用命令行输出提供的端口在Debug Configurations中创建了一个远程Java应用程序。 单击Apply,然后单击Debug,添加断点。 在我的Play项目的命令提示符中,我启动了测试 。 Eclipse永远不会在断点处停止。 这很烦人。 我使用的是Windows 7 Pro 64位。 谢谢你的帮助

重置h2中的自动增量

我正在测试一个返回json响应的控制器但第一次测试失败,因为h2数据库没有重置自动增量id。 手动使用夹具或创建对象也存在同样的问题。 @Before public void setUp() { Fixtures.deleteAllModels(); Fixtures.loadModels(“data.yaml”); } 如何解决这个问题呢?

Play Framework:使用参数重定向到控制器方法

我正在使用PLAY framework 2.2.1构建一个Web应用程序,并尝试在地址栏中显示所请求站点的所有可用http get查询参数,甚至是未在请求中设置的那些参数。 如果未设置所有http get参数,我想使用默认值添加未设置参数并进行重定向。 我有一个可以通过GET请求的网站: GET /test controllers.Application.test(q:String, w:String ?= null, f:String ?= null, o:String ?= null) 这是我想在controllers.Application : public static Result test(String q, String w, String f, String o){ … // In case not all parameters where set if (reload == 1){ return redirect(controllers.Application.test(qDefault, wDefault, fDefault, oDefault)); } else { ok(…); } […]