我想添加动态参数值(不确定我是否可以像这样调用它) 到我的scala html中的url。
使用javascript,我首先获得userId,然后将其传递给@ routes.adminController.auth(userId)。
这是我的源代码,
<script type="text/javascript">
function checkboxChecked() {
var checkbox = $('td > input:checked').length;
if(checkbox == 1){
var $checked = $('td > input:checked');
var userId = $checked.parent().next().text();
** I would like to add below and make it work**
//location.href = @routes.AdmnTask.user_set(userId)
} else {
alert("Please select 1 User ID to proceed.")
}
};
</script>
经过几次尝试后,我注意到我无法设置一些随机变量并将其放入location.href,如下所示。
var link = "@routes.AdmnTask.user_set(userId)"
location.href = link
请问有人帮我解决这个问题吗?
提前谢谢。
答案 0 :(得分:1)
正如我在评论中所说,你不能在Scala函数中使用Javascript变量,因为Scala是在服务器端和Javascript客户端执行的。
但是,有一种解决方法。
如果您的@routes.AdmnTask.user_set( ... )
在最后给出了URL
参数,例如http://example.com/userSet/1
或http://example.com/userSet?id=1
,则可以创建一个转换此URL
的函数进入一个更通用的:
/**
* Gets the base URL for a given route
*
* @param url Call - The route called with the parameter 0
* @return The URL base String.
*/
public static String baseUrl(play.api.mvc.Call url){
return url.toString().substring(0, url.toString().length() - 1);
}
此函数将切断URL
字符串中的最后一个字符,以便您可以在Scala模板中使用它。
然后,您在Scala / Javascript中需要做的就是:
location.href = '@yourClass.baseUrl(routes.AdmnTask.user_set(0))' + userId
编辑:这是上述函数的Scala版本:
def baseUrl(url: play.api.mvc.Call): String = {
url.toString.substring(0, url.toString.length - 1)
}