Action Method の実装 J2EE II 第9回 2004年12月2日.

Slides:



Advertisements
Similar presentations
年度 J2EE II 稚内北星学園大学 情報メディア学部 専任講師 安藤 友晴. 2 この講義の位置づけ 3年前期の「データベース論 (J2EE I) 」に続く講義。 「データベース論」の講義内容を理解 していることが前提。
Advertisements

1 JSP の作成 JSF による Web アプリケーション 開発 第 4 回. 2 ここでの内容 JSF での JSP の作り方と動かし方につい て学ぶ。
情報アプリケーション1 2006 年 10 月 12 日 第四回資料 担当 重定 如彦. 目次 データの送信とフォーム クイズ CGI 複数のパーツのデータの分割方法 配列変数.
Apache Camel Data Format Component Apache Camel
バリデータ J2EE II 第11回 / 2006年1月19日.
JavaScript プログラミング入門 2006/11/10 神津.
Struts1.xの脆弱性(CVE ) に対するSDEの対処:推奨タイプ (サンプルソースコードの公開)
1.1 C/C++言語 Hello.ccを作りコンパイルしてa.outを作り出し実行する
JSFによるWebアプリケーション開発 第9回
プログラミング基礎I(再) 山元進.
Apache Camel Data Format Component Apache Camel
エンタープライズアプリケーション II 第10回 / 2006年7月23日
JSFによるWebアプリケーション開発 第11回
Servlet J2EE I 第8回 /
Step-by-Step Guide on How to Start ALICE Analysis
最適化ソルバーのための Python言語入門
Myoungkyu Song and Eli Tilevich 発表者: 石尾 隆(大阪大学)
基礎プログラミング 第13回(2007年5月28日) 「関数」の補足説明 Report-Fの解説.
独習Java ・ 10.6  Hashtableクラス ・ 10.7  String Tokenizerクラス  12月12日    小笠原 一恵.
稚内北星学園大学 情報メディア学部 助教授 安藤 友晴
タグライブラリ ソフトウェア特論 第6回.
タグライブラリとJSP J2EE I 第10回 /
ビューとコントローラ.
タグライブラリとJSP J2EE II 第2回 2004年10月7日 (木).
JavaBeans とJSP データベース論 第5回.
JSFによるWebアプリケーション開発 第6回
エンタープライズアプリケーション II 第7回 / 2006年7月9日
第20章 Flyweight ~同じものを共有して無駄をなくす~
メソッド名とその周辺の識別子の 相関ルールに基づくメソッド名変更支援手法
JSPの作成 J2EE II 第3回 2005年4月10日.
Javaによる Webアプリケーション入門 第5回
補足説明.
第12回 2007年7月13日 応用Java (Java/XML).
プログラミング言語入門 手続き型言語としてのJava
第2回.リレーショナルデータベース入門 SQL を用いたテーブルへの行の挿入 SQL 問い合わせの発行と評価結果の確認.
JAVA入門後期⑩ 情報処理試験例題解説.
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
暗黙的に型付けされる構造体の Java言語への導入
Webアプリケーションの方向性 データベース論 第13回.
2006年度 東京サテライト校 エンタープライズ・アプリケーション II
Jakarta Struts (2) ソフトウェア特論 第11回.
Javaによる Webアプリケーション入門 第2回
エンタープライズアプリケーション II 第9回 / 2006年7月23日
第1章 実世界のモデル化と形式化 3.地物インスタンスの表現
Javaによる Webアプリケーション入門 第11回
Servlet J2EE I (データベース論) 第12回 /
JSFによるWebアプリケーション開発 第3回
プログラミングⅠ 平成30年10月22日 森田 彦.
アルゴリズムとプログラミング (Algorithms and Programming)
EntityManager と EJB QL EJB 3.0 コース 第8回 2006年8月5日.
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
C#プログラミング実習 第3回.
Javaによる Webアプリケーション入門 第4回
コレクション・フレームワーク J2EE I (データベース論) 第6回 /
コレクション・フレームワーク データベース論 第7回.
サブゼミ第7回 実装編① オブジェクト型とキャスト.
WebアプリケーションとTomcat ― これまでの復習とこれからの予習 ―
Jakarta Struts (1) ソフトウェア特論 第10回.
稚内北星学園大学 情報メディア学部 専任講師 安藤 友晴
アルゴリズムとデータ構造1 2009年6月15日
JSPの基本 J2EE I (データベース論) 第8回 /
第5回 プログラミングⅡ 第5回
JSFによるWebアプリケーション開発 第5回
JAVA入門⑥ クラスとインスタンス.
アルゴリズムとデータ構造 2010年6月17日
JSFによるWebアプリケーション開発 第10回
プログラミング入門2 第5回 配列 変数宣言、初期化について
JSFによるWebアプリケーション開発 第7回
MVCモデル2による Webアプリケーション
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
Presentation transcript:

Action Method の実装 J2EE II 第9回 2004年12月2日

ここでの内容 JSFでの Action Method の実装方法について学ぶ。

やりたいこと 画面1で名前を入力する 画面1のボタンを押すと、画面2に遷移する。 画面2では、画面1で入力された名前と、現在の時刻を表示する。

何をすればよいのか ボタンが押されたときに、「現在の時刻を取得する」という「ビジネスロジック」を実行する。 こうしたビジネスロジックを「Action Method」と言う。 Action Method は、Managed Bean に記述する。

currentTime という Action Method (1) public class ParameterBean { public String currentTime() { Date d = new Date(); DateFormat df = DateFormat.getDateTimeInstance(); ...... sb.append(df.format(d)); return "success"; }

currentTime という Action Method (2) 現在の日時を取得して、入力フィールドのパラメータと組み合わせている。 返値として “success” という文字列を返す。

page1.jsp <h:form id="searchForm"> <h:inputText id="word" value="#{ParameterBean.word}" /> <h:commandButton id="button1" action="#{ParameterBean.currentTime}" value="Go!" /> </h:form>

action 属性の比較 前章 <h:commandButton id="button1" action="success" value="Go!" /> 本章 action="#{ParameterBean.currentTime}" value="Go!" />

#{ParameterBean.currentTime} こうしたしくみのことを “Method Binding” と言う。 こうした #{……} という書式を “Method Binding 式” と言う。

Method Binding 式 #{ Beanの名前 . Action Method名 } “Beanの名前” は、 先の managed-bean-name 要素の内容部分 “Action Method名” は、ボタンが押されたときに実行される Action Method 名

Action Method のルール public であること 引数がないこと String を返値とすること この返値が outcome になる。

Action Method の返値と outcome (1) この outcome が、h:commandButton 要素の action 属性の値となる。 この値と、faces-config.xml の設定情報により遷移先が決まる。

Action Method の返値と outcome (2) <h:commandButton id="button1" action="#{ParameterBean.currentTime}" value="Go!" /> ↓(Action Method を実行) ↓ action=“success” value="Go!" />

図書検索プログラムの作成 (1)

プログラムの概要 (1) 検索語を入力すると、その検索語を含む本のデータのリストを出力する。 図書データはデータベースに格納されている。

プログラムの概要 (2) 入力フィールドに検索語を入れ、ボタンを押すと、Action Method が呼ばれる。 次の画面で、検索結果を出力する。

プログラムの概要 (3) 検索結果

検索語入力画面 <h:form id="searchForm"> <h:inputText id="searchWord" value="#{BookSearcher.word}" /> <h:commandButton id="submit" action="#{BookSearcher.searchBooks}" value="Go!" /> </h:form>

Managed Bean (1) プロパティ public class BookSearcher { ...... public void setWord(String word) { this.word = word; } public String getWord() { return word;

Managed Bean (2) Action Method public String searchBooks() { searchBooks(word); return "success"; } private void searchBooks(String word) { // データベースの検索処理

Managed Bean (3) Model の処理 (1) 検索結果には、複数の図書データが含まれる。 BookData という JavaBeans を用意 1冊の図書データは、1つの BookData に格納される。 java.util.List を使って、複数の BookData をまとめておく。

Managed Bean (3) Model の処理 (2) List list = new ArrayList(); BookData book = new BookData(); book.setId(rs.getString("id")); book.setTitle(rs.getString("title")); book.setAuthor(rs.getString("author")); list.add(book);

検索結果の出力画面 <h:dataTable id="table" border="1" value="#{BookSearcher.bookList}“ var="book"> <h:column> <f:facet name="header"> <h:outputText value="タイトル"/> </f:facet> <h:outputText id="bookTitle“ value="#{book.title}"/> </h:column> ...... </h:dataTable>

h:dataTable 要素 (1) コレクション (List, 配列など) のデータを表にして表示するUIコンポーネント id 属性がある。 border 属性は、表の罫線の太さの指定 <h:dataTable id="table" border="1" value="#{BookSearcher.bookList}“ var="book"> </h:dataTable>

h:dataTable 要素 (2) value 属性で、表示するコレクション型のプロパティを指定する。Value Binding 式を使う。 var 属性は、コレクション中の1つの要素を表す変数名となる。 <h:dataTable id="table" border="1" value="#{BookSearcher.bookList}“ var="book"> </h:dataTable>

h:dataTable 要素 (3) この例では、value 属性は List 型である bookList プロパティを指定している。 bookList には、複数の BookData が格納されている。 従って、var 属性で指定された book という変数名は、BookData Bean を指している。 <h:dataTable id="table" border="1" value="#{BookSearcher.bookList}“ var="book"> </h:dataTable>

h:column 要素 (1) <h:dataTable ……> <h:column> <f:facet name="header"> <h:outputText value="タイトル"/> </f:facet> <h:outputText id="bookTitle“ value="#{book.title}"/> </h:column>

h:column 要素 (2) h:dataTable 要素の1列分のデータを表す UIコンポーネント

f:facet 要素 表の1列のヘッダやフッタを表す UIコンポーネント <h:column> <f:facet name="header"> <h:outputText value="タイトル"/> </f:facet> …… </h:column>

データの出力 この列では、book という変数 (= BookData Bean) の title プロパティの値を出力する。 <h:column> …… <h:outputText id="bookTitle“ value="#{book.title}"/> </h:column>

h:dataTable の働き (1) 表の1行分が、h:dataTable の var 属性の値に対応 つまり、コレクション中の1つの JavaBeans が、表の1行分となる。 この例では、List 中の1つの BookData が、表の1行分となる。

h:dataTable の働き (2) BookData Bean のどのプロパティを出力するかは、column 要素によって決まる。