0

私のプロジェクトで抱えているこの問題を解決するには、あなたの助けが本当に必要です. とにかく、JSFは初めてです。プロジェクトに取り組んでおり、認証が成功するとデータベースから学生に試験記録が表示されるこのモジュールがあります。dataTable モデルを作成してビューで使用できるため、すべての学生が同じクラスに所属し、同じ数のコースを提供している場合、これは簡単です。しかし、私の場合、データベースには、コンピューター サイエンス 100、200、300 レベル、地質学 100、200、300 レベルなど、さまざまな学部やクラスの学生の試験記録のテーブルが含まれています。これらの学生は、まったく異なるコースも提供しています。物理学、GST、コンピューターを提供するものもあれば、提供しないものもあります。

私の問題は、さまざまな学生に成績とコース名を dataTable で動的に表示する方法です。イメージしてみてください。

100 レベルのコンピューター サイエンス テーブルには、CS101 CS102 GST101 MATH101 MATH102 PHY101 CHM101 があります。

200 レベルのコンピュータ サイエンス テーブルには、CS201 CS202 CS203 MATH201 CHM202 列の数と列ヘッダーの名前の違いに注意してください。

次に、コンピュータ サイエンス 100 レベルの学生が自分の試験記録を表示したいと考えています。事前定義された列名を持つ dataTable モデルを最初に作成するのではなく、列名を使用してこれらの記録を動的に dataTable に表示するにはどうすればよいでしょうか。列の数や名前が事前にわからない。さまざまなクラスのさまざまな生徒に対してこれをどのように行いますか? あらゆる学部やレベルの学生がログインして試験記録を取得できるようにする優れたコードが必要です。それが達成されたので、認証コードを求めているわけではありません。コードは、データベース テーブルの列ヘッダーの名前と、特定の 100 または 200 レベルで保持されているレコードを表示します。データベースには、学生の部門やクラスごとに列の数と名前が異なるテーブルが多数あるため、特定の列ヘッダーを含む dataTable モデルを作成する必要がないため、これが必要です。あなたの助けが必要です。問題を明確に伝えることができたことを願っています。JSF 2.1 (Facelets および Manage Bean)、NetBeans 7.2.1 上の MySQL データベース サーバーを使用しています。

4

4 に答える 4

0

を使用List<Map<String, Object>>して、一般的な方法でデータを取得できます。次に、列を動的に構築するために使用できます (ビューの構築時には実行されず、ビューのレンダリング時には実行されないため、これは不適切であることに<c:forEach>注意してください)。<ui:repeat>

環境が EL 2.2 をサポートしていると仮定した場合の具体的なキックオフの例を次に示します。

<h:dataTable value="#{bean.listOfMaps}" var="map">
    <c:forEach items="#{bean.listOfMaps[0].keySet().toArray()}" var="key">
        <h:column>
            #{map[key]}
        </h:column> 
    </c:forEach>
</h:dataTable>

別のコレクションにも列ラベルが必要な場合 (LinkedHashMap<String, String>順序を維持するため、a をお勧めします)、代わりに次のようにします。

<h:dataTable value="#{bean.listOfMaps}" var="map">
    <c:forEach items="#{bean.mapOfColumns}" var="column">
        <h:column>
            <f:facet name="header">#{column.value}</f:facet>
            #{map[column.key]}
        </h:column> 
    </c:forEach>
</h:dataTable>
于 2013-05-20T13:54:29.723 に答える
0

2列のテーブルを作成するのはどうですか

最初の列の名前: コース コード/名前

2 番目の列は名前になります: グレード

とにかく大学/大学でそれがどのように表示されているか...

それを実装するには、2 でオブジェクトを作成し、Stringsそのようなオブジェクトのリストを入力します...そしてそれがあなたのh:datatable value属性になります...

于 2013-05-20T11:11:43.877 に答える