我正在使用Play 2.0.2,我在一个特定的视图模板设置中遇到了隐式参数的问题。我会尽我所能描述它,但这并不是微不足道的,所以我提前为任何困惑道歉。
问题的核心是我称之为“片段”的模板。 piece采用以下参数:
@(piecesData: objects.PiecesDataRequest)(implicit content: Html)
content参数是隐式的,因为我从另一个模板以及控制器调用此模板。我找不到一种方法来显式地将“空”Html从控制器传递给片段模板,但是如果我隐式传递内容参数,它就可以工作。使用piece的模板是“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参数的所有其他模板不,即我认为这就是问题的症结所在。
答案 0 :(得分: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(""))
你定义了三个parens,但你只调用了两个parens。这样做:
Ok(
views.html.content.pieces(
PiecesDataRequest(Piece.getPiecesForContentFeed(contentFeedID), contentFeedID))(Html(""))
)
)