我正在尝试将操作传递给自定义标记,但我不想仅仅使用裸操作,而是还要在生成的网址中附加字符串。
只需采取行动即可:
#{nav.menu label: 'Log In', url: @access.AccessControl.login() /}
但#{nav.menu label: 'Log In', url: @access.AccessControl.login() + '?url=' + request.url /}
导致
MissingMethodException:没有签名 方法: play.mvc.Router $ ActionDefinition.plus() 适用于参数类型: (java.lang.String)值:[?url =] 可能的解决方案: 使用([Ljava.lang.Object), 分裂(groovy.lang.Closure), 是(java.lang.Object),wait(),any(), 转储()。
当我尝试#{nav.menu label: 'Log In', url: @{access.AccessControl.login()} + "?url=" + request.url /}
时,它会显示#{nav.menu} is not closed}
:
然后我尝试了
%{ 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 /}
答案 0 :(得分:3)
您可以使用.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 />
这将生成以下html
<a href="/application/newaction?nick=juancho&name=juan">mi propio anchor</a>
答案 1 :(得分:0)
你试过吗
%{ url = request.url }%
#{nav.menu label: 'Log In', url: @access.AccessControl.login(url) /}