【发布时间】:2014-08-13 20:23:45
【问题描述】:
我在 play framework google group 上发布了这个,但他们出于某种原因删除了它。也许有充分的理由,尽管我发现很难从动态 Web 框架转到像 Play 这样的静态框架。
问题在于我习惯于在控制器中设置随机变量,并在视图中某处的显示元素中检测到它们并处理它。在游戏中,您必须预先定义将传递给视图元素的所有内容,然后从该视图中您需要继续将元素传递给下一个视图元素,直到最终到达需要的位置。
我意识到你可以做包装 WrappedReqest 的复合对象,例如
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)
但是您仍然需要将数据对象从一个函数调用一路向下传递到下一个函数调用,直到它到达目标。在上面我希望数据映射在模板中神奇地可用。
【问题讨论】:
标签: playframework