1

我正在使用 Play 2.0.2,但在一个特定的视图模板设置中存在隐式参数问题。我会尽我所能描述它,但这并不完全是微不足道的,所以我提前为任何混淆道歉。

问题的核心是我称之为“一块”的模板。piece 采用以下参数:

@(piecesData: objects.PiecesDataRequest)(implicit content: Html)

content 参数是隐式的,因为我从另一个模板以及控制器调用此模板。我找不到将“空”Html 从控制器显式传递给片段模板的方法,但是如果我隐式传递内容参数,它就可以工作。使用片段的模板是“pieceUploadModal”,它采用以下参数:

@(piecesData: objects.PiecesDataRequest, 
  pieceData: objects.PieceDataRequest, dialogTitle: String)

并像这样调用片断:

@pieces(piecesData){ [Html] }

现在我想添加第二个隐式参数来改变它的参数列表:

@(piecesData: objects.PiecesDataRequest)(implicit content: Html, user: User)

然后我假设我也需要更改pieceUploadModal模板参数:

@(piecesData: objects.PiecesDataRequest, 
  pieceData: objects.PieceDataRequest, dialogTitle: String)(implicit user: User)

一切顺利......但是,我得到一个不是很有帮助的错误:

pieceUploadModal.template.scala:24: not enough arguments for method apply: 
(implicit      content: play.api.templates.Html, 
implicit user: models.User)play.api.templates.Html in object pieces.
[error] Unspecified value parameter user.
[error] """),_display_(Seq[Any]
(/*3.2*/views/*3.7*/.html.content.pieces(piecesData)/*3.39*/
{_display_(Seq[Any] (format.raw/*3.40*/("""

几个小时以来,我一直试图让它以多种不同的方式工作,并进行了大量的互联网搜索,但无济于事。任何帮助,将不胜感激。

作为最后一条信息,我将补充一点,我在这里使用的传递用户的范例隐式地适用于我所有其他使用隐式 Html 参数的模板,即我认为这是问题的症结所在.

4

1 回答 1

0

我找不到将“空”Html 从控制器显式传递给片段模板的方法

空 Html 可以使用 传递Html(""),您甚至可以将其定义为默认值。

但最后你只需要听编译器 - 它永远不会说谎。从您的评论中,我了解到这是您定义模板的方式:

(piecesData: controllers.objects.PiecesDataRequest)(content: play.api.templates.Html)(implicit user: models.User)

这就是你所说的:

views.html.content.pieces(PiecesDataRequest( Piece.getPiecesForContentFeed(contentFeedID), contentFeedID), Html(""))

您定义了三个括号,但您只调用了两个。像这样做:

Ok(
   views.html.content.pieces(
       PiecesDataRequest(Piece.getPiecesForContentFeed(contentFeedID), contentFeedID))(Html(""))
   )
)
于 2012-08-30T20:15:36.020 回答