2013-01-16 17 views
12

Benim Bahar MVC java denetleyici sınıf içinde böyle bu kodu vardır: şimdi ivlenmi benim JSP dosyası içinde & ilgili istatistik göstermek istiyorum uiClient RMI kullanarak veritabanından bazı verileri alacakJSTL kullanarak jsp içindeki bir listenin elemanını nasıl alabilirim?

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

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

nasıl JSTL kullanarak JSP içine Modelinin LinkedList elemanlarını alabilirim? Benim için hiçbir kontör i konulmuş olabilir. c:foreach etiketi

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

Ben de istediğiniz durumda = "iş" yerine var = "işlerin" var kullanmak olacaktır: Bu nihayet sorunun yazar tarafından kullanılan koddur Orijinal "işlere" başvurmak için – Greg

cevap

21

, doğru cevabı Elindeki cevapların her ikisinin bir kombinasyonudur

"get", bir jstl işlevi değil.

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

DÜZENLEME:

<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

Ben ur çözüm denedim ama bir sorun var: javax. el.PropertyNotFoundException: Özellik '0' türünde bulunamadı rs.ui.JobInfo – Mehdi

+0

mm tuhaftır. 'İstatistikler' değişkeniniz 'LinkedList' örneğiniz mi? –

+1

Evet, yukarıda yaptığım gibi tanımladım ... ama JobInfo'm bir dizi – Mehdi

3

kullanım varStatus özelliğin bir JSTL işlev değildir.

Kullanım varStatus c nitelik: foreach etiketi

ama:

Bence
<td>${stats[i.index].No}</td> 
7

get ait

+0

OP'nin kodu EL 2.2'yi kullanırken işe yarayacaktı. Tek sorun, şu ana kadar sağlanan kodda hiçbir yerde görülemeyen (ve ayrıca OP tarafından somut sorun olarak açıkça belirtilmiş olan) “i” nin uygun değerini sağlamasıdır. – BalusC

+0

ur çözüm denedim ama bir sorun var: javax.el.PropertyNotFoundException: Özellik '0' türü bulunamadı rs.ui.JobInfo – Mehdi

+0

Bu en yararlı cevap – Andremoniy

İlgili konular