Spring 如何使用JSTL在jsp中获取列表元素?
我的Spring MVC java控制器类中有这样的代码:Spring 如何使用JSTL在jsp中获取列表元素?,spring,jsp,spring-mvc,jstl,Spring,Jsp,Spring Mvc,Jstl,我的Spring MVC java控制器类中有这样的代码: @RequestMapping(value = "jobs", method = { RequestMethod.GET }) public String jobList(@PathVariable("username") String username, Model model) { JobInfo[] jobInfo; JobStatistics js; LinkedList<JobStatistics
@RequestMapping(value = "jobs", method = { RequestMethod.GET })
public String jobList(@PathVariable("username") String username, Model model) {
JobInfo[] jobInfo;
JobStatistics js;
LinkedList<JobStatistics> jobStats = new LinkedList<JobStatistics>();
try {
jobInfo = uiClient.getJobs(username);
for (int i = 0; i < jobInfo.length; i++) {
js = uiClient.getJobStatistics(jobInfo[i].getJobId());
jobStats.add(js);
}
model.addAttribute("jobs", jobInfo);
model.addAttribute("jobStats", jobStats);
}
@RequestMapping(value=“jobs”,method={RequestMethod.GET})
公共字符串作业列表(@PathVariable(“用户名”)字符串用户名,模型){
JobInfo[]JobInfo;
就业统计;
LinkedList jobStats=新建LinkedList();
试一试{
jobInfo=uiClient.getJobs(用户名);
对于(int i=0;i
哪个uiClient将使用RMI从数据库中获取一些数据。。。
现在,我想使用JSTL显示JSP文件中的作业和相关统计信息:
<c:set var="stats" value="${jobStats}" />
<c:forEach var="jobs" items="${jobs}">
<c:set var="jobID" value="${jobs.JobId}"/>
<table>
<tr class="tr1">
<td>${jobs.Topic}</td>
<td>${stats.get(i).No}</td>
</tr>
</table>
</c:forEach>
${jobs.Topic}
${stats.get(i).No}
如何使用JSTL在JSP中获取模型的
LinkedList
元素?可能没有计数器I
被放在我的范围内。使用c:foreach
标记的varStatus
属性
<c:forEach var="jobs" items="${jobs}" varStatus="i">
<c:set var="jobID" value="${jobs.JobId}"/>
<table>
<tr class="tr1">
<td>${jobs.Topic}</td>
<td>${stats.get(i.index).No}</td>
</tr>
</table>
</c:forEach>
${jobs.Topic}
${stats.get(i.index).No}
get
不是jstl函数
<td>${stats[i.index].No}</td>
${stats[i.index].No}
在我看来,正确的答案是你得到的两个答案的组合:
使用c:foreach标记的varStatus属性
但是:
“get”不是jstl函数
<td>${stats[i.index].No}</td>
${jobs.topic}
${stats[i.index].no}
编辑:这是问题作者最后使用的代码:
<c:set var="stats" value="${jobStats}" />
<c:forEach items="${jobs}" varStatus="i">
<c:set var="jobID" value="${jobs[i.index].jobId}"/>
<table>
<tr class="tr1">
<td>${jobs[i.index].topic}</td>
<td>${stats[i.index].no}</td>
<td>${jobID}</td>
</tr>
</table>
</c:forEach>
${jobs[i.index].topic}
${stats[i.index].no}
${jobID}
OP的代码在使用EL 2.2时会起作用。剩下的唯一问题是提供i
的正确值,这在目前提供的代码中是不可见的(OP也明确提到了具体问题)。我尝试了您的解决方案,但出现了一个问题:javax.el.PropertyNotFoundException:在rs.ui类型上找不到属性“0”。JobInfoIt是最有用的答案。我尝试了您的解决方案,但出现了一个问题:javax.el.PropertyNotFoundException:在rs.ui.JobInfomm类型上找不到属性“0”。这很奇怪。您的“stats”变量是LinkedList
ins吗实例?是的,我像上面一样定义了它…但是我的JobInfo是一个数组,我想我发现了错误。属性access的第一个字母应该是小写的。我会编辑答案。假设这些对象有'getJobId','getTopic'和'getNo'getters。我编辑了你的代码并得出了最终答案(对于那些想了解它的人来说,*java中的foreach项就像在jstl中使用'var',在jstl中使用'varStatus'而不是在jstl中使用'varStatus',但在jstl中不要同时使用这两个变量,如果您想引用原始的“作业”,我也会使用var=“job”而不是var=“jobs”