2011-11-10 7 views
0

私はindex.htmlファイル内のjsの変数を持っていると私はこのような割り当てやりたい:オートコンプリート用の文字列をjs変数に代入していますか?

var names=["${stateNames}"]; 

STATENAMESは、状態名を含むJavaの一覧です。上記のような割り当てを行うと、の名前はstateNamesに含まれるすべての状態名を持つようになりましたか?変数stateNamesは、再生コントローラからindex.htmlに渡されます。

上記の方法はありますか?

答えて

0

ここではさまざまなオプションを使用できます。

  1. もっとも近いオプションは、コンマ区切りのリストを出力するJavaExtensionを作成することです。
  2. リストを繰り返し処理して、array.push()表記を使用して、各値をnames配列に追加することができます。
  3. あなたはスクリプトのリストを反復するタグ、および出力値

オプション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(); 
    } 

} 

の下のようなクラスを作成する必要があります

var names=[${list.stringifyList()}]; 

オプション2と3、あなたのビューでJavaExtensionを使用することによって、その

0123の下に詳述されています
<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

あなたがGroovyのテンプレートを使用している場合は、Groovyのcollection methodsへのアクセス権を持っているので、これは、簡単です:

var names=[${stateNames.collect{'"'+it+'"'}.join(",")}]; 

collectjoinは、与えられた文字列で区切られた1つの大きな文字列を作成し、あなたのコレクションを変換します。

完全ために

Scalaのバージョン:

var names = [@(stateNames.map{"\"" + _ + "\""}.mkString(","))]; 
関連する問題