Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 如何使用JSTL在jsp中获取列表元素?_Spring_Jsp_Spring Mvc_Jstl - Fatal编程技术网

Spring 如何使用JSTL在jsp中获取列表元素?

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

我的Spring MVC java控制器类中有这样的代码:

@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”