[英]Assigning String array to js variable for autocomplete in play?
我在index.html文件中有一個js變量,我想做一個像這樣的賦值:
var names=["${stateNames}"];
其中stateNames是包含州名的Java List。 我如何進行如上所述的賦值,以便名稱現在包含stateNames中包含的所有州名? 變量stateNames從播放控制器傳遞給index.html。
有什么方法可以做到嗎?
如果您使用的是Groovy模板,這很簡單,因為您可以訪問Groovy的集合方法 :
var names=[${stateNames.collect{'"'+it+'"'}.join(",")}];
collect
轉換您的集合, join
創建一個由給定String分隔的大字符串。
Scala版本為了完整性的緣故:
var names = [@(stateNames.map{"\"" + _ + "\""}.mkString(","))];
您可以在此處使用許多不同的選項。
選項1,您需要創建如下所示的類
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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.