Java EE 6 の JSF では、Blanco2g は以下のように利用します。
package sample.jsf;
import java.sql.Connection;
import java.sql.SQLException;
import javax.faces.context.FacesContext;
import blanco.fw.BlancoInject;
import blanco.gettersetter.BlancoGetterSetter;
import blanco.jsf.BlancoJsfManagedBean;
/**
* Java EE 6 の JSF の管理 Bean を自動生成するサンプル。
*/
@BlancoJsfManagedBean
public abstract class AbstractSampleJsfManagedBean {
/**
* 画面に公開するフィールド。
*/
@BlancoGetterSetter
protected String fieldText;
/**
* 管理 Bean の処理のエントリポイント。
*
* @param conn
* このメソッド呼び出しをトランザクションとするデータベースコネクション。このメソッドの呼び出し元である XHTML 上からは、
* このメソッド・パラメータを省略することができるようになります。
* @param ctx
* JSF コンテキスト・オブジェクト。このメソッドの呼び出し元である XHTML
* 上からは、このメソッド・パラメータを省略することができるようになります。
* @param otherManagedBean
* この Bean から参照をおこないたい他の管理 Bean。このメソッドの呼び出し元である XHTML
* 上からは、このメソッド・パラメータを省略することができるようになります。
* @return メソッドの処理結果。
* @throws SQLException
*/
public String sayHello(@BlancoInject Connection conn, @BlancoInject final FacesContext ctx,
@BlancoInject final OtherManagedBean otherManagedBean) throws SQLException {
// ここで何かしらの処理を行います。
conn.commit();
return "こんにちは。";
}
}
/*
* このクラスは 'AbstractSampleJsfManagedBean' の具象クラスとして blanco Framework によって自動生成されました。
*/
package sample.jsf;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.SQLException;
import javax.el.ELContext;
import javax.el.ELResolver;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
/**
* Java EE 6 の JSF の管理 Bean を自動生成するサンプル。
*/
@ManagedBean
@ViewScoped
public class SampleJsfManagedBean extends AbstractSampleJsfManagedBean implements Serializable {
/**
* シリアルバージョン UID.
*/
private static final long serialVersionUID = 1L;
/**
* 画面に公開するフィールド。
*
* @return 取得したい値。
*/
public String getFieldText() {
return fieldText;
}
/**
* 画面に公開するフィールド。
*
* @param fieldText 設定したい値。
*/
public void setFieldText(final String fieldText) {
this.fieldText = fieldText;
}
/**
* 管理 Bean の処理のエントリポイント。
*
* @return メソッドの処理結果。
* @throws SQLException
*/
public String sayHello() throws SQLException {
java.lang.String autoValMethodResult;
final FacesContext ctx = FacesContext.getCurrentInstance();
final ELContext autoValElc = ctx.getELContext();
final ELResolver autoValRslvr = ctx.getApplication().getELResolver();
final OtherManagedBean otherManagedBean = (OtherManagedBean) autoValRslvr.getValue(autoValElc, null, "otherManagedBean");
final Connection conn = blanco.db.BlancoDbConnectionUtil.getConnection();
try {
autoValMethodResult = super.sayHello(conn, ctx, otherManagedBean);
} finally {
blanco.db.BlancoDbConnectionUtil.releaseConnection(conn);
}
return autoValMethodResult;
}
}
このように、メソッドの呼び出しの前後で よくある定型的な処理をソースコード自動生成で実現することができます。