Tags 传球动作加上在比赛中附加到标签上的字符串

Tags 传球动作加上在比赛中附加到标签上的字符串,tags,playframework,Tags,Playframework,我试图将一个操作传递给一个自定义标记,但我不只是简单的操作,我还想在生成的url中附加一个字符串 只需一个动作,它就能工作: #{nav.menu label: 'Log In', url: @access.AccessControl.login() /} 但是{nav.menu标签:“登录”,url:@access.AccessControl.login()+”?url='+request.url/}会导致 MissingMethodException:无签名 方法: play.mvc.Ro

我试图将一个操作传递给一个自定义标记,但我不只是简单的操作,我还想在生成的url中附加一个字符串

只需一个动作,它就能工作:

#{nav.menu label: 'Log In', url: @access.AccessControl.login() /}
但是
{nav.menu标签:“登录”,url:@access.AccessControl.login()+”?url='+request.url/}
会导致

MissingMethodException:无签名 方法: play.mvc.Router$ActionDefinition.plus() 适用于参数类型: (java.lang.String)值:[?url=] 可能的解决方案: 使用([Ljava.lang.Object;), split(groovy.lang.Closure), is(java.lang.Object)、wait()、any(), 转储()

当我尝试
{nav.menu标签:“登录”时,url:@{access.AccessControl.login()}+“?url=“+request.url/}
,它说
{nav.menu}未关闭}

于是我试着

%{ loginPath = @access.AccessControl.login(); }%
#{nav.menu label: 'Log In', url: loginPath + "?url=" + request.url /}
但是它说“模板/app/views/main.html未编译:意外标记:@”

如果执行此操作,则操作不会替换为路径:

%{ loginPath = '@{access.AccessControl.login()}' }%
#{nav.menu label: 'Log In', url: loginPath + "?url=" + request.url /}
所以我几乎没有主意了。它想从我这里得到什么


我已经能够使用以下方法使其工作 但似乎一定有更好的办法:

#{nav.menu label: 'Log In', url: play.mvc.Router.reverse('access.AccessControl.login').url + '?url=' + request.url /}
你试过了吗

%{ url = request.url }%
#{nav.menu label: 'Log In', url: @access.AccessControl.login(url) /}

您可以通过.add(paramName,paramValue)传递url参数

例如,我将像这样定义我自己的锚标记

视图/标记/anchor.html

%{
action = anchor ?: _arg;
%}
#{a action}my own anchor#{/a}
我可以像这样使用它:

#{anchor @Application.newAction().add('name', 'john').add('nick', 'johnny') /}<br />
#{anchor@Application.newAction().add('name','john').add('nick','johny')/}
这将生成以下html

<a href="/application/newaction?nick=juancho&amp;name=juan">mi propio anchor</a>

然后我得到“找不到能够调用操作access.AccessControl.login的路由”。我是否需要在路由文件中执行任何特殊操作才能使其正常工作?它是否在路由文件中声明?默认情况下,我担心没有路由指向您的控制器(在包中)