问题标签 [playframework]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
2488 浏览

java - 使用 Play 框架的 EC2 连接到 RDS

我有一个使用 Play 框架构建的小型站点,我试图在 EC2 服务器上针对 Amazon RDS 实例运行该站点。我可以在我的机器上针对 RDS 实例运行该应用程序,并且一切正常。但是当我将它部署到我的 EC2 服务器时,它会收到以下错误:

我的第一个想法是它是某种安全设置,但我有一个基于 Spring 的应用程序在同一 EC2 服务器上的 Tomcat 中运行,使用相同的用户名和密码连接到同一个 RDS 实例,它工作得很好。只有 Play 应用存在连接问题。

我似乎无法对为什么会发生这种情况提出任何解释,或者关于如何解决它的想法。

以前有人见过这样的事情吗?

0 投票
1 回答
648 浏览

hibernate - 获取相关对象的 ID 而不从数据库中获取它(Play 框架)

假设我有这两个模型:

我有一个 City 对象,想知道相关国家的 ID。我可以通过这样做从数据库中获取,city.getCountry().getId()但这似乎非常浪费。我怎样才能得到 ID(存储在数据库表中country_id)?

0 投票
4 回答
7822 浏览

session - playframework 中的对象会话

如何为每个用户会话存储实例对象?

我有一门课来模拟一个复杂的算法。该算法旨在逐步运行。我需要为每个用户实例化这个类的对象。每个用户都应该能够逐步推进他们的实例。

0 投票
1 回答
9007 浏览

java - 如何为播放框架编写自定义检查/验证

我尝试为play-framework编写检查并看到两种不同的可能性。我描述了两者并想知道我的理解是否正确(所以它更像是一个教程而不是一个问题,特别是因为我没有得到任何我错过了什么的回应)。那么存在哪些可能性。

  1. 简单的方法:扩展类Check
    优点:更容易写,更容易阅读
    缺点:你不能参数化检查,你只能定义消息。
  2. 高级方法:基于 OVal 编写检查AbstractAnnotationCheck
    优点:您可以对检查进行参数化,并且使用注释更简单
    缺点:有点复杂。

在我们查看实现之前,我想解释一下这些消息。您始终可以直接设置消息或使用键在消息属性中引用消息。最后一种是更清洁和推荐的方式。每个验证至少有 1 个参数:无效属性的名称。因此,验证或检查特定参数始终以%i$si>1 为参考。消息字符串的格式应遵循Formatter的规则,但我不确定是否支持所有功能。据我所知,仅支持 %s、%d 和 %f 与定位。所以%[argument_index$][flags]conversion转换只能是s,d或f。

让我们看两个例子: 我在模块中用于乐观锁定的简单方法:

您将此检查与注释一起使用@CheckWith(value=OptimisticLockingCheck.class, message="optimisticLocking.modelHasChanged")

因此,让我们仔细看看它是如何工作的。我们唯一要做的就是扩展类 play.data.validation.Check 并覆盖 isSatisfied 方法。在那里你得到你的模型和属性的值。您所要做的就是在一切正常时返回 true,否则返回 false。在我们的例子中,我们希望将当前 url 设置为参数。这可以通过调用 setMessage() 轻松完成。我们给出在消息属性和参数中定义的消息或消息键。请记住,我们只给出 1 个参数,但用 %2$s 表示,因为第一个参数始终是属性的名称。

现在是基于 Range-check 的复杂方式:首先我们需要定义一个 Annotation

然后检查

好的,我认为注释不必解释。让我们看看支票。在这种情况下,它是 extends net.sf.oval.configuration.annotation.AbstractAnnotationCheck。我们必须编写一个配置方法,我们可以在其中获取注释并可以复制参数。然后我们必须定义我们的检查。这类似于其他检查的实施。所以我们只写我们的条件并返回真或假,除了一个特殊的行!如果我们使用参数化消息,我们必须调用requireMessageVariablesRecreation();我们的方法。至少我们必须重写方法createMessageVariables。在这里,我们必须了解一点游戏知识(所有其他的东西都在这里描述)。您将消息放入带有键和值的映射中,但 play 只接受值(请参阅ValidCheck.java在框架代码中)。所以它会被位置引用。这就是我更改RangeCheckusingTreeMap而不是HashMap. 此外,我让键从它们可以引用的索引开始。

所以我希望这可以更清楚地说明如何编写自定义验证/检查。我希望描述是正确的。因此问题是我的理解正确吗?

0 投票
2 回答
1643 浏览

hibernate - javax.persistence/hibernate 里面玩

我是hibernate和java的新手,我正在尝试在playframework中定义一个简单的用户->组->权限模型,我希望在数据库级别强制执行删除级联规则,我不想让orm关心级联(类似于 python-sqlalchemy 被动删除),这是我的模型:

用户型号:

团体型号:

权限模型:

GroupPermission 模型:

用户组模型:

这会在 postgres 中生成以下 sql:

如您所见,未创建 tabe auth_user 中的用户名字段上的索引,表 user_groups 中的约束是重复的,我有 ON DELETE CASCADE 和 ON DELETE NO ACTION,我只想要表 group_permissions 中的级联版本未创建级联规则,

怎么了?

谢谢尼古拉

0 投票
4 回答
10616 浏览

java - 播放框架 renderJSON 问题

我是 Play Framework 的新手,在渲染 JSON 对象时遇到了问题。

这只显示[[{},{}],[{},{}],[{},{}]]......我做错了什么?我找不到任何可靠的文档。我尝试为 配置路由Application.LoginFail(format:'json'),但这什么也没做。

0 投票
3 回答
1541 浏览

google-app-engine - 如何使用 Play Framework 和 Google App Engine 创建 PDF?

我需要使用 Play Framework 和 Google App Engine 创建 PDF。有谁知道怎么做?

0 投票
2 回答
2093 浏览

java - 使用播放框架在休眠中绑定多个值

我正在尝试在 Play 框架中构建查询,我有

在我将 :school 与 List 与一个元素绑定后,它会返回结果,但如果我将 List 与多个元素绑定,则不会发生任何事情。

其实我需要类似的东西

候选人和学校之间的关系在链接表中。

有没有办法绑定多个值?

0 投票
2 回答
1577 浏览

internet-explorer - 使用不同浏览器在 playframework 中上传文件

我正在使用 playframework 来构建一个网站。而且我还使用了一个名为xheditor的富编辑器。

Xheditor 支持 ajax-fileuploading,它需要服务器端有一个动作,它接受包含上传文件的“filedata”参数。

所以我写了一个上传动作:

它在 IE6 中运行良好,文件数据不为空并且包含正确的数据。但是,如果我使用 chrome 或 firefox,则文件数据为

我用firebug来监控firebug提交了什么,发现它提交了这样一个header:

我认为 play 没有正确处理这种情况,所以参数“filedata”为空。

为了使用 chrome 和 firefox,我修改了该操作:

这适用于 IE6、chrome 和 firefox,但前提是上传文件非常小。例如小于 4K。如果稍微大一点,比如12K,“IOUtils.copy”方法会报“Read Error!”,甚至下面的代码也会报这样的错误:

0 投票
1 回答
1204 浏览

playframework - 如何影响播放控制器中的重定向行为?

如果您从控制器的公共方法调用,则在播放中您始终遵循Redirect-After-Post-Pattern 。在大多数情况下,这是一个很好的行为,但有时它可能是令人讨厌的。所以我试图找出它在 play 1.1 中是如何工作的!:基本是一些字节码增强,这是在play.classloading.enhancers.ControllersEnhancer. 在那里您可以发现仍然存在一些默认行为的例外情况:

  1. 如果您的方法由 package 中的注释进行注释play.mvc,例如 Before-annotation。
  2. 您使用 -Annotation 注释您的操作ByPass,此 Annotation 必须是内部类,因此名称 endsWith $ByPass

如果您总是想抑制重定向,这两种解决方案都很好。但是,如果您只想在特殊情况下这样做呢?然后就可以调用了ControllerInstrumentation.initActionCall()

我没有找到关于它的描述,我只是分析代码。那么我的结论是正确的还是有任何缺点?