skillup

技術ブログ

Java

JSFを使ったAjax

投稿日:

現在開発中のサブプロジェクトでJSFからAjaxを使う機会があったので紹介します。

仕様自体は非常にシンプルで下記の画面でプルダウンが変更になったときにDBを見に行って画面の値を更新するような仕様です。

hoge

これをAjaxで実装します。

JSF側

ajaxタグの説明

<f:ajax event=”change” execute=”@this” listener=”#{menuBean.setExpenseData() }” render=”fixedSalary”/>

説明の必要はあまりないかもしれませんが

event・・読んで字のごとくイベントです。今回はプルダウンが変わった時なのでそのままchangeです。

execute・・サーバー側に送るデータをここに記述します。自分だけの場合は@this、すべて送る場合は@all,formの中だけを送る@formなどあるようです。ディフォルトでは@thisです。

listener・・イベント発生時に実行させるメソッドです。戻り値はなしのものにすること

render・・これがはまりました。実はAjaxで送ってManagedBeanの値を更新してもJSF側の画面は変わりません。後ほど紹介する書籍にばっちりかいてありましたが、JSFのライフサイクルの中でレンダリングは行われないようです。更新したい場合はコンポーネントのidをここで記述する必要があります。

ManagedBean側

該当の処理部分だけ書きます。

こちらは特に説明はいらないかもしれません。あえていうと画面の遷移がないので@ViewScopedにしたほうが、処理が軽いです。

@RequestScopedだとオブジェクトの生成・廃棄が起こります。

今回、参考になったのは書籍ですね。

わかりやすいJavaEEウェブシステム入門」この9章がそのまま役に立ちました。

 

-Java
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

JSONへの変換

近年はJavaSciprtを利用した動的なサイトが多いため、データのやり取りをAjaxで行うことも多かったりします。 JavaScriptの場合、データをJSON形式で扱うため、サーバー側からレスポン …

no image

Javaでのログ出力 基礎編

Javaでのログ出力についてようわかってなかったので基礎から調べました。 Contents1 目的2 設定3 ソース4 出力5 リンク 目的 プログラムの実行過程を把握するため System.out. …

no image

JSFでのCSVダウンロード機能

JSF+CDIでCSVダウンロード機能を実装するときの処理です。 結構、汎用的でいろんなところででてきますね。 Contents1 コード2 参考リンク コード [crayon-5b77bfb1258 …

no image

JSFのifタグ

JSFは基本的にテンプレートなので、 HTML+CSS+JavaScript ロジック側からの変数の出力 ループ処理 以上のことをさせることはあまりありません。 が、まれに条件分岐なんかをさせたいとき …

no image

JAXRSによるRESTAPI作成方法

業務でJavaによりWEBAPI(Rsetful API)を作成する機会ががあったのでちょっとメモしておきます。 Contents1 RestAPIとは2 プログラムの作成方法について RestAPI …