0

私が作成してjspに渡す配列リストは

ArrayList countryList = new ArrayList();
countryList.add(new CountryData("1", "USA"));
countryList.add(new CountryData("2", "Canada"));
countryList.add(new CountryData("3", "Mexico"));
countryList.add(new CountryData("4", "Canada"));

jspページで私はを使用して表示しています

<html:select property="country" >
<html:option value="0">Select Country</html:option>
<html:optionsCollection name="InputForm" property="countryList"
label="countryName" value="countryId" />
</html:select>

jspのリストをフィルタリングして、ドロップダウンにカナダのみを表示することは可能ですか?

4

2 に答える 2

0

はい、可能です。いくつかの方法があります。

  1. スクリプトレットの使用: (必要なインクルード ディレクティブがすべて完了していると仮定します)

    <%= List<CountryData> newList = new ArrayList<CountryData>(); %>
    <html:select property="country" >
    <html:option value="0">Select Country</html:option>
    <% 
         for(CountryData cd:countryList) {
             if("Canada".equals(cd.getCountry())) {
                 newList.add(cd);
             }
         }
    %>
    <html:optionsCollection name="InputForm" property="newList" label="countryName" value="countryId" />
    </html:select>
    
  2. JSTLc:forEachまたはc:ifタグを使用して、リストから不要な要素をすべて除外します。

  3. リストから「カナダ」以外のすべての国を除外するために特別に開発されたカスタム タグを使用する

于 2012-12-20T10:55:54.160 に答える
0

おそらく最も簡単な方法は、CountryData のリストを JSON にシリアル化し (無数にある無料の Java JSON ライブラリの 1 つを使用)、JavaScript を使用して国の配列をフィルター処理することです。

Java の場合:

String countryListAsJSON = serialize(countryList);
request.setAttribute("countries", countryListAsJSON);

JSP で:

<script>
    var countries = ${countries};
    //...
</script>

これは、次の HTML コードに変換されます。

<script>
    var countries = [{"countryId": "1", "countryName": "USA"}, {"countryId": "2", "countryName": "Canada"}, ...];
    //...
</script>
于 2012-12-19T18:43:47.157 に答える