回答編集履歴

2 コメントに関する回答追記

BlueMoon

BlueMoon score 1241

2015/02/05 17:11  投稿

Valueで指定するデータの型が一致しないのが原因ではないでしょうか。EntityBeanを定義し、Listで渡せば良いかと思います。
以下の様なClassを作成します。(データ型は推測なので修正下さい)
```lang-java
package mybean;
public class Customer {
   private Integer No;
   private Integer Kokyaku_No;
   private String Type;
   private String Result;
   public Customer(Integer No, Integer Kokyaku_No, String Type, String Result) {
       this.No = No;
       this.Kokyaku_No = Kokyaku_No;
       this.Type = Type;
       this.Result = Result;
   }
   public Integer getNo() {
       return No;
   }
   public void setNo(Integer No) {
       this.No = No;
   }
   public Integer getKokyaku_No() {
       return Kokyaku_No;
   }
   public void setKokyaku_No(Integer Kokyaku_No) {
       this.Kokyaku_No = Kokyaku_No;
   }
   public String getType() {
       return Type;
   }
   public void setType(String Type) {
       this.Type = Type;
   }
   public String getResult() {
       return Result;
   }
   public void setResult(String Result) {
       this.Result = Result;
   }
   
}
```
BackingBeanではfaceletに渡すパラメータ型をResultSetからListに変更し、SQL実行後にResultSetからListに格納します。
```lang-java
package mybean;
import beans.*;
import java.io.Serializable;
import java.sql.*;
import java.util.*;
import javax.annotation.PostConstruct;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
@Named(value = "bean")
@RequestScoped
public class Bean implements Serializable{
   
   private List<Customer> rs;
       
   String jdbc_url = "jdbc:sqlserver://w2012-java\\JAVA;databaseName=test";
   String user = "sa";
   String password = "P@ssw0rd";
   
   @PostConstruct
   public void init(){
               
       try {
           ResultSet result;
           Connection conn;
           
           Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
           conn = DriverManager.getConnection(jdbc_url, user, password);
           Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                       ResultSet.CONCUR_READ_ONLY);       
           String SQL = "SELECT * FROM test";
           result = stmt.executeQuery(SQL);
           
           rs=new ArrayList<>();
           
           while(result.next()){
               rs.add(new Customer(result.getInt(1), result.getInt(2),
                                  result.getString(3), result.getString(4)));
           }         
           
       }catch (ClassNotFoundException | SQLException e) {
          e.printStackTrace();
       }
       
   
   }
   public List<Customer> getRs() {
       return rs;
   }
   public void setRs(List<Customer> rs) {
       this.rs = rs;
   }
   
}
```
ソースの実行確認までは出来ていないので、バグが有りましたら済みません。
自前の環境で類似のコードを試したら出来ました。ご参考までに。
自前の環境で類似のコードを試したら出来ました。ご参考までに。
以下はコメントに関する回答ですが、javaEEにおけるDBアクセス手段にEntityManagerを使用する手法が有ります。この場合、EntityBeanはTable毎に作成が必要となりますが(EntityBeanからTableをCreateするメソッドが有ります)Queryの結果はEntityBeanのListとなりますので、回答の様な変換は必要は無く相性は良いと思います。EntityBeanについて説明サイトは幾つか有りますが、自分は以下書籍で学習しています。
[わかりやすいJava EE ウェブシステム入門](http://www.shuwasystem.co.jp/products/7980html/4216.html)
1 BackingBeanのクラス名を質問に合わせました。

BlueMoon

BlueMoon score 1241

2015/02/05 12:55  投稿

Valueで指定するデータの型が一致しないのが原因ではないでしょうか。EntityBeanを定義し、Listで渡せば良いかと思います。
以下の様なClassを作成します。(データ型は推測なので修正下さい)
```lang-java
package mybean;
public class Customer {
   private Integer No;
   private Integer Kokyaku_No;
   private String Type;
   private String Result;
   public Customer(Integer No, Integer Kokyaku_No, String Type, String Result) {
       this.No = No;
       this.Kokyaku_No = Kokyaku_No;
       this.Type = Type;
       this.Result = Result;
   }
   public Integer getNo() {
       return No;
   }
   public void setNo(Integer No) {
       this.No = No;
   }
   public Integer getKokyaku_No() {
       return Kokyaku_No;
   }
   public void setKokyaku_No(Integer Kokyaku_No) {
       this.Kokyaku_No = Kokyaku_No;
   }
   public String getType() {
       return Type;
   }
   public void setType(String Type) {
       this.Type = Type;
   }
   public String getResult() {
       return Result;
   }
   public void setResult(String Result) {
       this.Result = Result;
   }
   
}
```
BackingBeanではfaceletに渡すパラメータ型をResultSetからListに変更し、SQL実行後にResultSetからListに格納します。
```lang-java
package mybean;
import beans.*;
import java.io.Serializable;
import java.sql.*;
import java.util.*;
import javax.annotation.PostConstruct;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
@Named(value = "bean")
@RequestScoped
public class Bb implements Serializable{
public class Bean implements Serializable{
   
   private List<Customer> rs;
       
   String jdbc_url = "jdbc:sqlserver://w2012-java\\JAVA;databaseName=test";
   String user = "sa";
   String password = "P@ssw0rd";
   
   @PostConstruct
   public void init(){
               
       try {
           ResultSet result;
           Connection conn;
           
           Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
           conn = DriverManager.getConnection(jdbc_url, user, password);
           Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                       ResultSet.CONCUR_READ_ONLY);       
           String SQL = "SELECT * FROM test";
           result = stmt.executeQuery(SQL);
           
           rs=new ArrayList<>();
           
           while(result.next()){
               rs.add(new Customer(result.getInt(1), result.getInt(2),
                                  result.getString(3), result.getString(4)));
           }         
           
       }catch (ClassNotFoundException | SQLException e) {
          e.printStackTrace();
       }
       
   
   }
   public List<Customer> getRs() {
       return rs;
   }
   public void setRs(List<Customer> rs) {
       this.rs = rs;
   }
   
}
```
ソースの実行確認までは出来ていないので、バグが有りましたら済みません。
自前の環境で類似のコードを試したら出来ました。ご参考までに。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る