jQueryとJavaリストの例
jQueryを使用してJavaリストを反復処理する直接的な方法はありません。次のケーススタディを参照してください。
スプリングコントローラー
@RequestMapping(value = "/", method = RequestMethod.GET)
public ModelAndView getPages() {
List list = new ArrayList();
list.add("List A");
list.add("List B");
list.add("List C");
list.add("List D");
list.add("List E");
ModelAndView model = new ModelAndView("somepage");
model.addObject("list", list);
return model;
}
JSPページでは、${List}を介してリストオブジェクトにアクセスし、JSTLを介してそれを反復処理できます。
somepage.jsp
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
${listValue}
ListオブジェクトをjQueryに直接渡したい場合はどうすればよいですか?
問題:Javaリストには二重引用符はありません
jQuery$.each()を使用してJavaリストを反復処理する例。
HTMLページ
上記のjQueryスクリプトは実行されません“ Uncaught SyntaxError:Unexpected token、”
htmlページ(ソースコード)
上記のhtmlソースコードを確認してください。Javaリストはリストの値を二重引用符"で囲んでいないため、jQueryはそれを処理できません。
解決策:JavaリストをJSONに変換する
ソリューションは、jQueryに渡す前にJavaリストをJSON形式に変換します。 Springコントローラーで、Jackson(または他のJSONプロセッサー)を使用して、リストをJSON形式に変換します。
@RequestMapping(value = "/", method = RequestMethod.GET)
public ModelAndView getPages() {
ObjectMapper mapper = new ObjectMapper();
List list = new ArrayList();
list.add("List A");
list.add("List B");
list.add("List C");
list.add("List D");
list.add("List E");
ModelAndView model = new ModelAndView("somepage");
String json = "";
try {
json = mapper.writeValueAsString(list);
} catch (Exception e) {
e.printStackTrace();
}
model.addObject("list", json);
return model;
}
HTMLページ
htmlソースコードを確認します。
htmlページ(ソースコード)
完了しました。
Note
JSON形式の文字列のオブジェクト配列をループするには、jQueryで解析する前にJavaScriptオブジェクト(JSON.parse()または$.parseJSON())に変換する必要があります$.each()。 この例を参照してください–JQuery Loop Over JSON String