シンプルな Spring MVC アプリケーションを実行しています。コントローラーからjspに文字列値を渡すことができます-正常に動作します。
コントローラーがリスト データを渡すように求められると、jsp ビューでのレンダリングに失敗します。jspに渡す前に、コントローラー側でデータをテストして、空でないことを確認しました。
以下のコード抜粋
@RequestMapping(method = RequestMethod.GET)
public ModelAndView printWelcome(){
ArrayList<String> listData = new ArrayList<String>();
listData.add("Hello");
listData.add("World");
for(int i =0; i< listData.size(); i++){
System.out.println(listData.get(i));
}
ModelAndView modelAndView = new ModelAndView("list");
modelAndView.addObject("lists", listData);
return modelAndView;
}
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Hello World!</h1>
<ul>
<c:forEach var="listValue" items="${listData}">
<li>${listValue}</li>
</c:forEach>
</ul>
</body>
編集:
問題は私の春のconfでした。(私は思う-私はまだこれに慣れていないので。)
コントローラーは ModelAndView オブジェクトを返していましたが、実際には文字列のビュー名のみを返す必要があります。また、作業中のコントローラーには、パラメーター arg ModelView を持つコンストラクターがあり、リスト データを追加する必要があります。
@RequestMapping(method = RequestMethod.GET)
public String printWelcome(ModelMap map){
List<String> listData = new ArrayList<String>();
listData.add("Hello");
listData.add("World");
map.addAttribute("lists", listData);
//return list;
return "list";
}