2016-10-06 17 views
0

MVCモデルを実装すると、セッションBeanでJPAを使用して取得したサーブレットに渡すデータベースのデータを含むListオブジェクトがあります。 Listオブジェクトはサーブレットからjspに渡されます。 JSTLを使用してJSPでテーブルに表示する必要があるため、データベースには多くの40 ++カラムがあります。JSTLの列で列の名前と要素を取得する方法

列名の代わりに列インデックスを呼び出して、列名を入力するのではなくループできるようにするにはどうすればよいですか?私の基本的な考え方は次のとおりです。

<table> 
<tr> 
    <c:forEach var="i" begin="1" end="49" items="${listObject}"> 
     <td>${//here to loop listObject column name by index}</td> 
    </c:forEach> 
</tr> 
<c:/forEach item="${listObject}" var="a"> 
<tr> 
    <c:forEach var="i" begin="1" end="49"> 
    <td>${//here to loop listObject data by column index}</td> 
    </c:forEach> 
</tr> 
</c:forEach> 
</table> 

出力は以下のようになるように:

stu ID | First Name | Last Name | Attendance Week 1| ...... | Attendance Week 46 
----------------------------------------------------------------------------------- 
     |   |   |     |  | 
     |   |   |     |  | 
     |   |   |     |  | 
     |   |   |     |  | 

私はコラム40 ++に列1から入力することは不可能ですので、私はループを使用したいです誰も助けることができますか?

+0

の要素については、最初の質問http://stackoverflow.com/questions/39866370/jstl-loop-by-column-indexをご覧ください。 – AxelH

+0

列名の場合は、名前を持つ配列を作成するか、最初の行の同じコレクションに配列を作成できます。 – AxelH

+0

ありがとうございます。はい、列の名前は正しく、データベースの最初の行に挿入できます。しかし、要素に来て、あなたが示唆する方法は、配列内の特定の位置に要素を取得することです。 c [0]を使うと、最初の列の要素を呼び出すのではなく、c配列の最初の要素を取得することを意味します。 – helloworld1234

答えて

1

これを実現するには「反射」が必要です。

  • ループあなたのオブジェクトのフィールド/プロパティを通じて:
    基本的な考え方は、ということです。
  • プロパティのすべての値を持つfieldValueListという文字列のリストを作成します。オペレーションのlistObjectの各要素には、対応するfieldValueListが必要です。
  • JSTLでは、単にlistObjectをループし、次にfieldValueListをループします。

ここにはかなり関連性の高い別のスレッドがあります。あなたの質問に関連していない
How to loop over a Class attributes in Java?

、あなたのテーブルには、1から46までのハードコーディングされた「出席ウィーク」が含まれないようにテーブルを正規化するので、あなたは、この上で反射に対処する必要はありません/リファクタリングを検討する必要があります一見シンプルな問題。

+0

ReflectionをJSTLでどのように使用しますか?またはJSPでJavaを追加することを提案していますか? – AxelH

+0

@AxelHプロパティのすべての値を持つ 'fieldValueList'という文字列のリストを作成します。 opの 'listObject'の各要素は対応する' fieldValueList'を持つ必要があります。 JSTLでは 'listObject'をループし、' fieldValueList'をループします。 opのデータベーステーブルがAttendence第1週から第49週のようなものになっているという事実は、正規化が必要だと思うが、それは別の問題である。 –

+0

はい、私は正常化を考慮しました。設計上の問題のいくつかから、出席リストをハードコーディングする方が良いです。ところで助けてくれてありがとう。それはあなたが対処したいのと同じ考えですか? [http://stackoverflow.com/a/160976/5614753] – helloworld1234

関連する問題