Nie jestem w stanie powiązać danych w modelu z widokiem. Używam wiosennego rozruchu. W tej chwili działa tak:
@RequestMapping("/members")
public ModelAndView getMembers() {
List<Member> members = memberDao.getMembers();
ModelAndView model = new ModelAndView("member/membersList");
model.addObject("members", members);
return model;
}
To pozwoliło mi uzyskać dostęp do atrybutu modelu za pomocą
<c:forEach items="${members}" var="member" varStatus="memberStatus">
<tr>
<td>${member.id}</td>
<td>${member.firstName}</td>
<td>${member.lastName}</td>
</tr>
</c:forEach>
Próbuję go uruchomić, zwracając ciąg znaków zamiast ModelAndView. Coś takiego:
@RequestMapping("/members")
public String getMembers(ModelAndView model) {
List<Member> members = memberDao.getMembers();
model.addObject("members", members);
return "member/membersList";
}
Nie jestem pewien co do używania @ModelAttribute
po stronie java lub commandName
w jsp. Czy to coś, na co muszę spojrzeć? Czy ktoś może oświecić, co się dzieje?
Dodawanie kodu kontrolera:
@Controller
public class MemberController {
@Autowired
private MemberDAO memberDao;
@RequestMapping("/members")
public ModelAndView getMembers() {
List<Member> members = memberDao.getMembers();
ModelAndView model = new ModelAndView("member/membersList");
model.addObject("members", members);
return model;
}
}
Odpowiedzi:
0 dla odpowiedzi № 1Obiekt do renderowania JSP
należy dodać jako Model atrybut:
@RequestMapping("/members")
public String getMembers(Model model) {
List<Member> members = memberDao.getMembers();
model.addAttribute("members", members);
return "member/membersList";
}
0 dla odpowiedzi nr 2
Twój pierwszy sposób powinien działać. Jeśli nie, sprawdź, czy masz na swojej stronie JSP deklarację @taglib, na przykład:
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
Jeśli zwrócisz String (jak w drugim przykładzie: „Members / MembersList”) Wiosna spróbuje znaleźć i wyświetlić stronę JSP o nazwie MembersList.jsp w lokalizacji „Members”. W takim przypadku parametry nie zostaną przekazane do JSP.