• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:java & JSF1.2 についての質問です。)

Java & JSF1.2におけるデータ表示の問題

このQ&Aのポイント
  • JavaとJSFを勉強中のプログラマが、クエリー結果をJSFのDataTableに表示する処理の問題に直面しています。
  • クエリーの結果は8件のデータを返しているにもかかわらず、DataTableに表示されません。
  • ArrayListでは正常に表示されるが、ResultSetでは表示されないため、解決策を教えて欲しいとしています。

質問者が選んだベストアンサー

  • ベストアンサー
  • drg75
  • ベストアンサー率34% (98/288)
回答No.1

h:dataTableタグはコレクション(List,配列など)のデータを 表にして表示するUIコンポーネントですからリスト型の物でないと 表示できないかと思います。

参考URL:
http://www.wakhok.ac.jp/~tomoharu/jsf2004/text/index_c7.html#doc1_id795
kimoto8
質問者

補足

残念ながら、自分で答えを見つけてしまいました。 ある意味、この回答は正しいと思われます。 JSFの実装には、いくつか種類があるそうです。 私は一つしかないと思って Myfaces という実装を使用していました。 しかし、現在JSF実装のデファクトスタンダードは、「Mojarra(マハーラ)」という実装だそうです。  Myfaces は、いくつか不具合もあり速度も遅いなど問題のある実装だそうです。 商用のアプリケーションサーバのJSFもほとんど Mojarra だそうです。  私の「ResultSet で、<h:dataTable>表示できない」問題も、「もしかしたら Myfacesの不具合かも知れない」と思い、JSF実装を Mojarra に入れ替えてみました。  すると、案の定 ResultSet で <h:dataTable> 表示ができるようになりました。  原因は、Myfaces の不具合でした。  これからJSFを勉強する人は、JSF実装には Mojarra を使用することをお勧めします。  私のように無駄な苦労をしない為に。 回答者の回答の「リスト型の物でないと表示できない」という回答もMyfaces においては正しいのです。 しかし、Mojarra においては当てはまりません。  とりあえず、原因がわかったので、この回答をベストアンサーに選んで終了したいと思います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • JSFについて

    JSFを使おうとしてるのですが <%@page contentType="text/html; charset=Shift_JIS"%> <%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%> <%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%> <html> <head> <title>jsfsample1</title> </head> <body bgcolor="#ffffff"> <h1>JSF サンプル</h1> <f:view> <h:form> <h:outputText value="ようこそJSFへ" /> <h:inputText /> <h:commandButton value="click"/> </h:form> </f:view> </body> </html> 上記の10行目<f:view>でエラーが出るのですが何ででしょうか?? ライブラリやweb.xmlは本を見て所定の場所にコピーしました。

    • ベストアンサー
    • Java
  • JSFでJavaScriptを使用するには?

    JSF初心者の為、頓珍漢な質問で恐縮です。 以下のようなJSFタグを使用したJSPがあるとします。 <%@ page contentType="text/html;charset=Shift_JIS" %> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <html> <head> </head> <body> <f:view> <h:form> <h:inputText id="number" value="#{myBean.message}"/> <h:commandButton action="#{myBean.doHoge}" value="送信"/> </h:form> </f:view> </body> </html> このJSPに、以下の処理をJavaScriptで実装したいと思っています。 「送信ボタンのOnClickイベントでinputTextに入力された文字をJavaScriptのAlert()関数でポップアップ表示する。」 JSFタグがなければなんてことのない処理ですが、JSFタグを使用している状況でどのようにJavaScriptを使用していいものなのかがよくわかりません。 上記の処理はどのように実装すればいいのでようか? JSFでJavaScriptを使用する方法について参考になるサイトがあれば教えてください。

    • ベストアンサー
    • Java
  • JSFを使ったJSPについて

    お世話になります。JSFの使い方についてご教授ください。 JSFタグ使って書いたjspが吐いたHTMLのソースを見ると、文字が全て株のようにユニコードのコードポイント(?)になっているのですが、これはこういうものですか? Javascriptで書いた入力値の検証関数にも「社員ID」と値をベタ書きしておいたら、「社員IDを入力してください。」というダイアログになってしまいました。 どなたか JSFタグ使って書いたjspが吐いたHTMLのソースの文字を株のようにしない方法 あるいは 上記のJavascriptのメッセージを「社員IDを入力してください。」ときちんと読めるようにする方法 を、ご教授ください。どうぞよろしくお願いします。

  • 【JSF】一つのテキストボックスの値を、複数のJAVAに渡す方法

    イメージとしては <h:inputText value="#{A.id}"/> の#{A.id}の部分に さらに、#{B.id}も指定したいのですが 出来ますでしょうか? やりたい事は テキストボックスに指定されたキーワードを Aボタンを押すとA.javaにテキストボックスの値を渡し Bボタンを押すとB.javaにテキストボックスの値を渡したいのです。 現状では、AかBのどちらか一方にしか値を渡すことが出来なくて困っています。 出来なければ、同等の処理を行うにはどの様にしたら宜しいでしょうか? 宜しくお願い致します。

    • ベストアンサー
    • Java
  • JavaでのSQL文の実行について

    JavaでのSQL文の実行について Class.forName("org.gjt.mm.mysql.Driver"); con = DriverManager.getConnection("jdbc:mysql://localhost/testdb?useUnicode=true&characterEncoding=UTF-8", "id", "pw"); stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); sql = new StringBuffer(); sql.append("set @i:=0;select id,@i:=@i+1 as 'num',name,kana from table order by kana"); rs = stmt.executeQuery(sql.toString()); ResultSetMetaData rsmd = null; rsmd = rs.getMetaData(); tbl = new ArrayList<ArrayList>(); //検索結果 取得 if(rs.next()){ ・ ・ ・ ・ といった形でSQL文を実行してるのですが、うまくいきません。 MySQLのバージョンは5.1です。MySQL上でこのSQLを実行するとしっかり結果は取得できたので、Javaプログラムの書き方に問題があると思うのですが、上記のように一度で二つのSQL文を実行することはできないのでしょうか。単一のSQLの実行は正常にできています。ユーザ変数は取得された結果一覧に行番号を付与するために使っています。 2回に分けてこのSQLが実行できるのであれば、その方法でも良いので教えてもらいたいです。 つたない説明で申し訳ないですが、よろしくお願いします。

    • ベストアンサー
    • Java
  • JSFで最初のリクエストで動く処理を実装するには?

    近日、JSF(ver 1.2)でWebシステムを実装することになりJSFの勉強中のものです。 ASP.NET や PHP(Smarty) でWebシステム実装経験があります。 JSFでどう実装すれば良いのかわからないことがあり、詳しい方にお教え頂きたいと考えています・・・! 【質問概要】 JSFで最初のリクエスト時のみに動く処理はどのように実装すればよいのでしょうか? ASP.NETでは Page_Load イベントで Page#IsPostBack を以下の例のように使用すると 最初のリクエスト時のみに動く処理を実装することができました。 ---- 例 ここから ------------------------------------------- void Page_Load() { // 毎リクエスト時に行う処理 if (!IsPostBack) { // 最初のリクエスト時にのみ行う処理 } } ---- 例 ここまで ------------------------------------------- JSFではこれに相当するものが無いでしょうか? 【試してみたこと】 管理Beanのコンストラクタで最初のリクエスト時にのみ行う処理ができるかと思い、 以下のtest.jspを実行し、コンソールにどのように表示されるか試してみました。 ---- test.jsp ここから ------------------------------------- <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%> <%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> (中略) <body> <f:view> <h:form> <h:commandButton action="#{Test.clickTest}" value="テストボタン"></h:commandButton><br /> </h:form> </f:view> </body> </html> ---- test.jsp ここまで ------------------------------------- ※Test は 下記 Test.java で実装した管理Bean。スコープはrequest。 ---- Test.java ここから ------------------------------------- public class Test { public Test(){ System.out.println("コンストラクタを通っている。"); } public String clickTest() { System.out.println("ボタンが押された。"); return "clickTest"; } } ---- Test.java ここまで ------------------------------------- <コンソール出力結果> 最初のリクエスト時: コンストラクタを通っている。 テストボタン押下後: コンストラクタを通っている。 ボタンが押された。 このことから、リクエストのたびにコンストラクタが処理されていることが分かりました。 ASP.NETの Page#IsPostBack の様なものがあれば、最初のリクエストかどうかを判別できるのですが・・・! 以上です。 上記のようなコンストラクタを使用する以外でも、なにか良い方法は無いでしょうか? お詳しい方、何卒よろしくお願い申し上げます・・・!

  • C#のdatatableを配列に挿入し、DataGridViewにバインドする方法

    開発環境:VS2005 はじめまして。ゆかりともうします。 今悩んでいるのが、datatableに入っているオブジェクトを配列に挿入し、 文字列編集後にDataGridViewに表示させたいのですが、やり方がわかりません。 お手数ですが、どなたかご教示いただけないでしょうか? コードサンプル) ArrayList array = new ArrayList(); select * from name; using (System.Data.DataTable dataTable = new DataTable()) { this.sqlDataAdapter.Fill(dataTable); <---どのように記述してよいのか分かりません---> } ※select文で抽出されてくる項目は5つございます。 すみませんが、よろしくお願い致します。

  • Excel VBA EOFに関して

    テキストボックスにDateを入力し、SQLServerに接続しSelectの結果をシートに書き込むだけのものなのですが、「BOFとEOFのいずれかがTrueになっているか、または現在のレコードが削除されています」というエラーでさっぱりわかりません。どなたかアドバイスをお願い致します。 -前後省略- stdate = UserForm1.stdate.Value endate = UserForm1.endate.Value strsql = "select ***" strsql = strsql & "from ***" strsql = strsql & "where *** and ***.start_date between '" & stdate & "' and '" & endate & "' " con.Open connectionString Set rs = con.Execute(strsql) Sheets("Data1").Select rs.MoveFirst i = 2 Do Until rs.EOF Cells(i, 1) = rs.Fields(0).Value Cells(i, 2) = rs.Fields(1).Value Cells(i, 3) = rs.Fields(2).Value Cells(i, 4) = rs.Fields(3).Value i = i + 1 rs.MoveNext Loop con.Close Set con = Nothing Exit Sub Err_DBConnectOpen: MsgBox Err.Description If con.State <> ADODB.adStateClosed Then con.Close End If Set con = Nothing End Sub

  • javaの初歩的な質問です

    以下のソースコードをかきました Image image = ImageIO.read(Thread.currentThread().getContextClassLoader().getResourceAsStream("16_16.png")); すると以下のエラーがでてきました Exception in thread "main" java.lang.IllegalArgumentException: input == null! at javax.imageio.ImageIO.read(Unknown Source) at Task.<init>(Task.java:23) at Task.main(Task.java:16) 16_16.png が見つからないというメッセージでしょうか? しかし16_16.pngはエクリプス上ではプロジェクト直下に入っているようにみえます。 数ヶ月前まではエラーなどは出てなかったと思うのですが。

    • ベストアンサー
    • Java
  • java のstruts1.3です。

    java のstruts1.3です。 Cannot invoke newStrutsKadai.EntryWorkForm.setArrayDB on bean class 'class newStrutsKadai.EntryWorkForm' - argument type mismatch - had objects of type "java.lang.String" but expected signature "java.util.ArrayList" と言うエラーがでます。 以下javaのソースです。DB接続は完璧に出来ています。 public final class EntryWorkForm extends ActionForm { private static final long serialVersionUID = 1L; private String cmbOsName; ArrayList<EntryWorkForm> array = new ArrayList<EntryWorkForm>( ) ; public void reset( ActionMapping map, HttpServletRequest req ) { //必要な部分だけ抜粋 //検索された行数文ループ while( rs.next( ) ) {//本マスタテーブル 検索された行数文ループ String stOSName = rs.getString("OSName"); //上記の2行を丁寧に記述した EntryWorkForm obj = new EntryWorkForm( stOSName.toString() ); array.add( obj ) ; } //END while( rs.next( ) ) this.setArrayDB( array );//ここでエラーエラーエラー } /****************************************************************************************/ private ArrayList<EntryWorkForm> arrayDB = new ArrayList<EntryWorkForm>( ); //セット オブジェクト配列 public void setArrayDB( ArrayList<EntryWorkForm> arrayDB ){ this.arrayDB = arrayDB; } //ゲット オブジェクト配列 public ArrayList<EntryWorkForm> getArrayDB ( ) { return this.arrayDB ; } /****************************************************************************************/ public String getCmbOSName ( ) { return this.cmbOsName; } public void setCmbOSName ( String cmbOsName ) { this.cmbOsName = cmbOsName; } public EntryWorkForm( ) { } //コンストラクタ 引数あり EntryWorkForm ( String cmbOSName ) { System.out.println("テスト用で作成したコンストラクタが呼ばれています。 ReturnScreenFormDB.java"); cmbOsName = cmbOSName; } 質問です--- JSPでセレクトボックスに動的に出力しています。 JSP画面でボタンを押して画面遷移をすると上記のエラーが出ます。

    • ベストアンサー
    • Java