2012-03-09 29 views
1

アプリケーション構成データの格納に使用されるデータベースがデータベースにあります。データベース・データを使用してJSFページにデータ表を表示する方法

これは、テーブル構造である - それは非常に単純な例です:私はこのようにテーブルのデータを表示したい

SessionTTL    MaxActiveUsers   
---------------------- ---------------------- 
30      787      

<table border="1"> 
    <tr> 
    <td>SessionTTL</td> 
    <td>30</td> 
    </tr> 
    <tr> 
    <td>MaxActiveUsers</td> 
    <td>787</td> 
    </tr> 
    <tr> 
    <td>option</td> 
    <td>value</td> 
    </tr> 
    <tr> 
    <td>option</td> 
    <td>value</td> 
    </tr> 
</table> 

私はこのJSFのコードを使用してデータを表示しようとしましたこのJavaコードは、私が望むものではありませんでした。

   <h:dataTable id="books" 
         columnClasses="list-column-center, 
         list-column-right, list-column-center, 
         list-column-right" headerClass="list-header" 
         rowClasses="list-row" styleClass="list- 
         background" value="#{DashboardController.getDashboardList()}" var="store"> 
       <h:column> 
         <h:outputText value="Session Timeout"/> 
         <h:outputText value="Maximum Logged Users"/> 
       </h:column> 
       <h:column>      
         <h:outputText value="#{store.sessionTTL} minutes"/> 
         <h:outputText value="#{store.maxActiveUsers}"/> 
       </h:column> 

      </h:dataTable> 




public List<Dashboard> getDashboardList()throws SQLException{ 

     List<Dashboard> list = new ArrayList<Dashboard>(); 

     if(ds == null) { 
       throw new SQLException("Can't get data source"); 
     } 

     Connection conn = ds.getConnection(); 

     if(conn == null) { 
       throw new SQLException("Can't get database connection"); 
     } 

     PreparedStatement ps = conn.prepareStatement("SELECT * from GLOBALSETTINGS"); 

     try{ 
      //get data from database   
      ResultSet result = ps.executeQuery(); 
      while (result.next()){ 
       Dashboard cust = new Dashboard(); 
       cust.setSessionTTL(result.getString("SessionTTL")); 
       cust.setMaxActiveUsers(result.getString("MaxActiveUsers")); 
       list.add(cust); 
      } 
     } 
     catch(Exception e1){ 
      // Log the exception. 
     } 
     finally{ 
      try{ 
       ps.close(); 
       conn.close(); 
      } 
      catch(Exception e2){ 
       // Log the exception. 
      } 
     } 
     return list; 
    } 

私が欲しいと思うようなデータですか?

ベストは、少なくとも、あなたのdataTableの正しいvalue属性を使用する必要があり、私はすでにあなたの前の質問で述べ、いくつかの設計上の欠陥のほかに

答えて

4

getメソッドにかっこを割り当てることはできません。マネージドBeanのList属性を使用する必要があります。

value="#{DashboardController.getDashboardList()}" //WRONG! 

あなたのマネージドBeanは次のようになります。

public class DashboardController { 
    private List<Dashboard> lstDashboard; 
    public DashboardController() { 
     try { 
      lstDashboard = getDashboardList(); 
     } catch (Exception e) { 
      //log the exception or something else... 
     } 
    } 
    //getter and setter... 
    public List<Dashboard> getLstDashboard() { 
     return this.lstDashboard; 
    } 
    public void setLstDashboard(List<Dashboard> lstDashboard) { 
     this.lstDashboard = lstDashboard; 
    } 
    //your other methods here... 
} 

第二に、あなたはあなたのテーブルのすべての列の設計ではなく、行のデザインを設定します。 1つの列に2つの値を設定し、別の列に実際の出力を設定しています。

<h:dataTable id="books" 
    columnClasses="list-column-center, 
     list-column-right, list-column-center, 
     list-column-right" headerClass="list-header" 
     rowClasses="list-row" 
    styleClass="list-background" 
    value="#{DashboardController.lstDashboard}" 
    var="store"> 

    <h:column> 
     <f:facet name="header"> 
      <h:outputText value="Session Timeout" /> 
     </f:facet> 
     <h:outputText value="#{store.sessionTTL} minutes"/> 
    </h:column> 
    <h:column>      
     <f:facet name="header"> 
      <h:outputText value="MaxActiveUsers" /> 
     </f:facet> 
     <h:outputText value="#{store.maxActiveUsers}"/> 
    </h:column> 

</h:dataTable> 

@BalusCはStackOverflowのJSFの専門家である:あなたのDataTableのコードを修正

。彼は、blog entryでJSF DataTableを使用することに関する非常に良い例を持っています。

2

を願っています。

置き換えますと

value="#{DashboardController.getDashboardList()}" 

value="#{DashboardController.dashboardList}" 

を接頭辞が自動的に追加されます "GET"。角括弧は省略することができます。

0

getDataList()では、通常のゲッターメソッドを記述できます。 dataList()メソッドのいくつかを記述し、そのメソッドでビジネスコードを実装します。

jsfのdataTableのxhtmlファイルまたはjspファイルのメソッド宣言。

<h:dataTable id="books" type="submit" value="#{DashboardController.dataList}" var="dashbord"> 

    <h: column name="ID"> 

     <f:facet name="header"> 

     <h:outputText value="#{dashbord.id}"/> 

     </f:facet> 

    </h:column> 

...your another columns... 

</h:dataTable> 
+0

ようこそスタックオーバーフロー!これは誰もが合意/不一致に応じて投稿に投票できるクリーンなQ&Aサイトです。これは、あなたがしようとしているように、誰もが合意/不一致の上でうんざりした形でお互いを繰り返す、古きよき伝道フォーラムではありません。私はあなたが本当に追加することが実質的でない限り、既に答えられた質問への回答を投稿しないことをお勧めします - この特定のケースではそうではないようです。良い回答を投稿することで最初に15人の代理人を獲得してください。そして、あなたは他の投稿を繰り返すのではなく、合意に基づいて投票することができます。 – BalusC

関連する問題