Javascript 将字符串数组分配给js变量,以便自动完成?
我在index.html文件中有一个js变量,我想执行如下赋值:Javascript 将字符串数组分配给js变量,以便自动完成?,javascript,playframework,Javascript,Playframework,我在index.html文件中有一个js变量,我想执行如下赋值: var names=["${stateNames}"]; 其中stateNames是包含状态名的Java列表。我如何执行上述赋值,以便名称现在将所有州名称包含在州名称中?变量stateNames从播放控制器传递到index.html 有没有办法做到以上几点???这里有许多不同的选项可供您使用 最简单的选择是创建一个输出逗号分隔列表的JavaExtension 您可以简单地迭代列表,并使用array.push()符号将每个值添加到
var names=["${stateNames}"];
其中stateNames是包含状态名的Java列表。我如何执行上述赋值,以便名称现在将所有州名称包含在州名称中?变量stateNames从播放控制器传递到index.html
有没有办法做到以上几点???这里有许多不同的选项可供您使用
package ext;
import play.templates.JavaExtensions;
import java.util.*;
public class MyExtensions extends JavaExtensions {
public static String stringifyList(List list) {
StringBuffer buff = new StringBuffer();
for (Object item: list) {
buff.append("'"+item.toString()+"'"+",");
}
return buff.toString();
}
}
然后,您只需在视图中使用JavaExtension来使用它,所以
var names=[${list.stringifyList()}];
备选方案2和3详述如下
<script type="text/javascript">
// option 2
var names = new Array();
#{list items:list, as:'item'}
names.push('${item}');
#{/list}
// option 3
var names2 = [%{
for (String item: list) {
out.print("'"+item+"'"+",");
}
}%]
</script>
//选择2
变量名称=新数组();
#{列表项:列表,作为:'item'}
name.push('${item}');
#{/list}
//选择3
变量名称2=[%{
用于(字符串项:列表){
打印(““+”项+“+”,”);
}
}%]
如果您使用的是Groovy模板,这很简单,因为您可以访问Groovy的:
collect
转换集合,join
创建一个由给定字符串分隔的大字符串
出于完整性考虑,Scala版本:
var names = [@(stateNames.map{"\"" + _ + "\""}.mkString(","))];
var names = [@(stateNames.map{"\"" + _ + "\""}.mkString(","))];