Tags 传球动作加上在比赛中附加到标签上的字符串
我试图将一个操作传递给一个自定义标记,但我不只是简单的操作,我还想在生成的url中附加一个字符串 只需一个动作,它就能工作: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
#{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&name=juan">mi propio anchor</a>
然后我得到“找不到能够调用操作access.AccessControl.login的路由”。我是否需要在路由文件中执行任何特殊操作才能使其正常工作?它是否在路由文件中声明?默认情况下,我担心没有路由指向您的控制器(在包中)