2013-01-16 17 views
12

tôi có mã này như bên trong Spring MVC điều khiển java lớp học của tôi:cách lấy phần tử của danh sách bên trong jsp bằng JSTL?

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

mà uiClient sẽ nhận được một số dữ liệu từ cơ sở dữ liệu sử dụng RMI ... bây giờ tôi muốn thể hiện các công việc liên quan đến thống kê & bên trong tập tin JSP của tôi sử dụng 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> 

làm thế nào để tôi có được LinkedList yếu tố của mô hình bên trong JSP của tôi sử dụng JSTL? Có thể không có không có truy cập i được đưa vào phạm vi cho tôi.

+0

Tôi cũng sẽ sử dụng var = "công việc" thay vì var = "công việc" trong trường hợp bạn muốn để tham khảo "công việc" ban đầu của – Greg

Trả lời

21

Theo tôi, câu trả lời đúng là sự kết hợp của cả hai câu trả lời bạn nhận được:

sử dụng varStatus thuộc tính của c: foreach thẻ

nhưng:

"get" không phải là chức năng 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> 

EDIT: đây là mã cuối cùng được sử dụng bởi các tác giả của câu hỏi:

<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

Tôi đã thử giải pháp ur nhưng có sự cố: javax. el.PropertyNotFoundException: Thuộc tính '0' không được tìm thấy trên loại rs.ui.JobInfo – Mehdi

+0

mm thật lạ. Biến 'stats' của bạn có phải là cá thể 'LinkedList' không? –

+1

vâng, tôi đã xác định nó giống như những gì tôi đã làm ở trên ... nhưng JobInfo của tôi là một mảng – Mehdi

3

sử dụng varStatus thuộc tính của c:foreach thẻ

<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 không phải là một chức năng JSTL.

<td>${stats[i.index].No}</td> 
+0

mã OP sẽ hoạt động khi sử dụng EL 2.2. Vấn đề duy nhất còn lại là cung cấp giá trị thích hợp của 'i', không thấy được ở đâu trong mã được cung cấp cho đến nay (và cũng được OP đề cập một cách rõ ràng là vấn đề cụ thể). – BalusC

+0

Tôi đã thử giải pháp ur nhưng có sự cố: javax.el.PropertyNotFoundException: Thuộc tính '0' không được tìm thấy trên loại rs.ui.JobInfo – Mehdi

+0

Đó là câu trả lời hữu ích nhất – Andremoniy

Các vấn đề liên quan