2013-01-16 521 views
12

私はSpring MVCのJavaコントローラクラスの内部で、このようなこのコードを持っている: は今、私は仕事に私のJSPファイル内の&関連の統計を表示したいuiClientは、RMIを使用してデータベースからいくつかのデータを取得します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); 
    } 

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

は、どのように私はJSTLを使用して、私のJSP内でモデルのLinkedList要素を得るのですか?私のためにスコープに入れられたカウンターはないでしょう。ic: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> 
+0

私はまた、あなたがしたい場合には代わりにVAR =「仕事」のVAR =「仕事」を使用します元の "仕事"を参照する – Greg

答えて

21

、正しい答えは、あなたが得た答えの両方の組み合わせです:foreachのタグ

しかし:

は、cのvarStatus属性を使用

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

EDIT:これは最終的に問題の著者によって使用されるコードです:

<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

私は解決策を試しましたが、問題があります。 el.PropertyNotFoundException:プロパティ '0'が型rs.ui.JobInfo – Mehdi

+0

mmに見つかりません。あなたの '統計'変数は 'LinkedList'インスタンスですか? –

+1

ええ、上記のように定義しました... しかし私のJobInfoは配列 – Mehdi

3

使用varStatus属性はJSTL機能ではありません。私の意見で

​​3210
7

get

+0

EL 2.2を使用しているときにOPのコードが機能していました。残っている唯一の問題は、適切な値の 'i'を提供することです。これはこれまで提供されているコードにはどこにも見当たりません(具体的な問題としてOPによって明示されています)。 – BalusC

+0

私は解決策を試しましたが、問題があります: javax.el.PropertyNotFoundException:プロパティ '0'がタイプrs.ui.JobInfoに見つかりません – Mehdi

+0

これは最も便利な回答です – Andremoniy

関連する問題