我正在尝试显示一个列表,该列表的每个对象都有另一个列表,我必须显示,值即将到来但未显示,下面是我尝试过的代码,如果有人可以识别我在做什么错了,这将非常有帮助。我正在使用Spring MVC,但我不认为它与此错误有任何关系,任何帮助都将不胜感激。
@Entity
@Table(name="FILE_TRACKING_MANAGEMENT")
@NamedQuery(name="FileTrackingManagement.findAll", query="SELECT f FROM FileTrackingManagement f")
{
@OneToMany(mappedBy="fileTrackingManagement")
private List<FileNoting> fileNotings;
//bi-directional many-to-one association to FileTrackingFile
@OneToMany(mappedBy="fileTrackingManagement")
private List<FileTrackingFile> fileTrackingFiles;
}
我的控制器类:
@RequestMapping("viewMarkedFiles/list")
public ModelAndView viewMarkedFiles(Model model)
{
List<FileTrackingManagement> markedFileList= fileService.getList();
//model.addAttribute("markedFileList", markedFileList);
return new ModelAndView("viewMarkedFiles", "markedFileList", markedFileList);
}
我的JSP页面:
<table border="1" bgcolor="black" width="600px">
<c:forEach items="${markedFileList}" var="markedFileVal">
<%-- <c:set var="fileNotings" value="${jobs[i.index].jobId}"/> --%>
<tr
style="background-color: white; color: black; text-align: center;"
height="30px">
<td><c:out value="${markedFileVal.diarynumber}" />
<td><c:out value="${markedFileVal.subject}" />
<td>
</td>
<td>
</td>
<td>
<c:forEach items="${markedFileList.fileNotings}" var="filenotings">
<c:out value="${filenotings.notingData}" /></c:forEach>
</td>
</c:forEach>
</table>
它引发了这个异常:
45: <%-- <c:out value="${fileVal.description}" /> --%>
46: </td>
47: <td>
48: <c:forEach items="${markedFileList.fileNotings}" var="filenotings">
49: <c:out value="${filenotings.notingData}" /></c:forEach>
50:
51:
Stacktrace:] with root cause
java.lang.NumberFormatException: For input string: "fileNotings"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
提前致谢
答案 0 :(得分:2)
<c:forEach items="${markedFileList}" var="markedFileVal">
所以,你在列表markedFileList
上进行迭代。在标记正文中,当前元素为markedFileVal
。
然后你做
<c:forEach items="${markedFileList.fileNotings}" var="filenotings">
所以你在markedFileList.fileNotings
以上。但是markedFileList
是一个列表。这不是当前的元素。你想要的是
<c:forEach items="${markedFileVal.fileNotings}" var="filenoting">
另请注意,我从s
删除了最终filenotings
。此变量指向单个文件。不是几个。
答案 1 :(得分:0)
@OneToMany(fetch = FetchType.EAGER,mappedBy =“fileTrackingManagement”) 私人列表fileNotings;
默认情况下,fetchType的值为Lazy,当我更改其值时,它会起作用