Playframework 如何提高scala play Framework的灵活性

Playframework 如何提高scala play Framework的灵活性,playframework,Playframework,我在play framework google group上发布了这篇文章,但他们出于某种原因删除了它。也许有很好的理由,但我发现很难从一个动态的web框架变成像Play这样的静态框架 问题是我习惯于在控制器中设置随机变量,并在视图的某个显示元素中检测到这些变量,然后进行处理。在游戏中,您必须预先定义将传递到视图元素的所有内容,然后从该视图继续将元素传递到下一个视图元素,直到它最终到达需要的位置 我意识到你可以制作包裹包裹包裹的复合对象 case class UserDataRequest[A]

我在play framework google group上发布了这篇文章,但他们出于某种原因删除了它。也许有很好的理由,但我发现很难从一个动态的web框架变成像Play这样的静态框架

问题是我习惯于在控制器中设置随机变量,并在视图的某个显示元素中检测到这些变量,然后进行处理。在游戏中,您必须预先定义将传递到视图元素的所有内容,然后从该视图继续将元素传递到下一个视图元素,直到它最终到达需要的位置

我意识到你可以制作包裹包裹包裹的复合对象

case class UserDataRequest[A](val user: User, val cart: Cart,
request: Request[A]) extends WrappedRequest(request) 
并传递UserDataRequest类型的对象,但这仍然没有那么灵活

您可以传递类型为[String,Any]的映射,但这可能感觉像是一个欺骗,您必须将键值强制转换为适当的类型,这并不太糟糕

使用play的人对如何克服这个问题有什么建议吗?有人做最后一个案子吗

在我的公司,我们必须非常灵活,能够为赞助内容等添加临时黑客,这很难提前捕获,因此有时我们必须根据单个项目的id触发页面元素。我不想每次都重构来实现这一点

我想你可以采用上述两者的混合

case class MyRequest[A](val user: User, val item: Item, data: Map[String,Any]
request: Request[A]) extends WrappedRequest(request) 

但是您仍然需要将数据对象从一个函数调用一直传递到下一个函数调用,直到它到达其目标。在上面的例子中,我希望数据映射能够在模板中神奇地使用。

我猜您对文档及其工作方式没有清晰的了解。事实上,Play是静态类型的,这并不意味着它对所有人都是静态的,但它试图在Web上实现更高的类型安全性(这是一个巨大的优势)

你应该读到:

  • (例如)

  • 从外观上看,无法做到这一点,您必须从我所看到的内容将所有内容传递给控制器中的主体视图。从我对他们的理解来看,这对我的场景也不起作用。 如果有人不厌其烦地说,请纠正我,因为我想知道一个更好的方法。
    解耦就到此为止。

    我已经读过它们和scala的剧本。我所看到的只是一个例子,你有一个或可能是一对对象,你传递给一个视图中使用的视图,但我感兴趣的情况是,你可能需要一个对象或设置一个在第一个视图中不需要的标志,或者甚至可能是该视图的子视图,但可能是子视图的子视图。如何将该标志、对象等传递给这些子视图,而不需要繁琐的参数传递和更改中间视图。以上哪一个链接解决了这个问题?我认为隐式args也不能解决这个问题。如果您已经阅读了文档,您应该已经看到播放模板: