2013-01-16 37 views
12

我有我的Spring MVC的Java控制器類內部,這樣的代碼:如何使用JSTL獲取jsp內的列表元素?

@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); 
    } 

這uiClient將使用RMI從數據庫中獲得一些數據... 現在我要展示我的工作JSP文件中&相關統計使用JSTL:

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

如何讓我的JSP中使用JSTL型號的LinkedList要素是什麼?我可能不會有沒有櫃檯i

+0

我也會在你想要的情況下使用VAR =的「工作」,而不是VAR =「工作」以引用原來的「作業」 – Greg

回答

21

在我看來,正確的答案是兩者你有答案的組合:

的C

使用varStatus屬性:的foreach標籤

但:

「get」不是jstl函數。

<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[i.index].no}</td> 
    </tr> 
    </table> 
</c:forEach> 

編輯:這是最後使用的問題,筆者代碼:

<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> 
+1

我試過你的解決方案,但有一個問題:javax。 el.PropertyNotFoundException:沒有在類型rs.ui.JobInfo – Mehdi

+0

毫米上找到屬性'0',這很奇怪。你的'stats'變量是'LinkedList'實例嗎? –

+1

是啊,我定義它就像我上面做的... 但我的JobInfo是一個數組 – Mehdi

3

使用varStatusc:foreach標籤

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

get的屬性不是JSTL功能。

​​3210
+0

OP的代碼在使用EL 2.2時會起作用。剩下的唯一問題是提供'i'的適當值,這在目前爲止提供的代碼中是無法看到的(OP也明確提到這是具體問題)。 – BalusC

+0

我試過你的解決方案,但有一個問題: javax.el.PropertyNotFoundException:屬性'0'沒有找到類型rs.ui.JobInfo – Mehdi

+0

這是最有用的答案 – Andremoniy