プログラミングTips

RichFacesの部品に対してタグのevent属性として適切な値について

Ajax4jsfのタグを利用すると、通常のJSFの入力フィールドを簡単にAjax化できます。たとえば以下のようにして <h:inputText value="#{user.emailAddress}" > <a:support event="onblur" ajaxSingle="true" reRender="errorMessage"/> </h:inputText> 入力フィールドのフォーカスが外れた時点でAjaxでPOSTリクエストを送信し、バリデーションをかけることが可能です。 おなじ要領でやの入力をAja…

Hibernateのlazy関連用Proxyについての注意点

JPAの仕様では@ManyToOneなど関連先が1個になる関連はデフォルトでeager関連となります。特に、JPAのプロバイダーとしてHibernateを利用する場合、eager関連はデフォルトでOUTER JOINされてしまうため、多くの関連を定義すると一気に大量のJOINが行われてし…

SeamでHttpServletRequestにアクセスする方法

SeamアプリケーションでHttpServletRequestなどのサーブレットAPIのオブジェクトにどうやってアクセスするか、知らないとどうやってやるべきかすぐにわからないのですが、FAQとして以下にやり方が書いてあったので、メモしておきます。 http://seamframework…

Spring MVCの設定でContextLoaderListenerを使う必要があるケース

従来のSpring開発者の常識では、web.xmlにて ContextLoaderListenerを設定してWebアプリケーションで共通のコンテキストを読み込む DispatcherServletを設定して、サーブレットごとのコンテキストを読み込む というように2階層のアプリケーションコンテキス…

大混乱に陥っているJavaEE 6のアノテーションに関する使い分けについて

JavaEE 6標準は、従来のJavaEE 5に対してさらなるEoDと軽量化を目指しているということだったのですが、いざ使おうと思うと、名前が同じアノテーションが複数のパッケージに定義されていたり、意味的にほとんど違いがないようなアノテーションが存在していた…

JBoss ToolsでまともにSeamの開発をできるようにするまでの手順のまとめ

ここ1ヶ月ほどで、JBoss Toolsを使ったSeamの開発環境を構築する上でいろいろ行った対応について、手順を以下にまとめておきます。JBoss ASのバージョンは5.1.0.GAを前提とします。 JBoss Toolsのインストール 現時点では、(Eclipse 3.6ベースのプラグイン…

エンティティクラスのequalsメソッドとhashCodeメソッドを定義しなくてはならない場合

Seamの便利な機能の一つにタグを使って変換を行い、エンティティのリストを使って直接画面の選択項目を描画させる機能があります。たとえば、アクションクラスのどこかで @SuppressWarnings("unchecked") @Factory(scope = ScopeType.APPLICATION) public Li…

JBoss AS 5.1.0でデバッグログをコンソールに出力する方法

基本的なことかも知れませんが、JBoss AS 5.1で個別にカテゴリのログレベルを設定しているにもかかわらず、コンソールにデバッグレベルのログを出力できずに、結構はまったので回避策をメモします。原因がわかれば、何のことはないというか、 [サーバーディ…

JBoss AS 4.2.3でfacelets関連のloadImplicit ERRORログが出力される問題に対する対処方法

http://seamframework.org/85172.laceなど多くのサイトでfaceletsで多数のloadImplicitというERRORログが出力される問題が報告されていますが、結局JDKのloggerとlog4jとの連携がうまくいっていないことが原因のようです。JBoss AS 4.2.3やtomcat上で発生す…

HTTP Proxyサーバー経由でのインターネットアクセスしかできない環境でSeamTest(TestNG)が実行できない場合の対策

会社の環境などインターネットに直接接続できず、HTTP Proxyサーバー経由でのアクセスしかできない環境ではSeamTestの実行時に勝手にDTDを検索に行ってしまい、「UnknownHostException: www.jboss.org」で例外となってしまうようです。 とりあえずの対処とし…

JBoss ASの起動時間を短縮する方法

ホットデプロイが完全でないことやメモリーリークの問題(Seamアプリの再デプロイを繰り返すと遅かれ早かれOutOfMemoryErrorが発生する)があることなどから、JBoss AS5.1.0のdefault構成で起動すると、あまりにも起動時間が長いことが開発生産性を低下させ…

@DataModel/@DataModelSelectionを使った一覧選択機能の実装はアンチパターンか?

Seamのステートフルなアーキテクチャーを活かした例として、入門書などにはよく@DataModelと@DataModelSelectionを組み合わせて一覧からエンティティを選択するような例が書かれています。たとえば、Seamのディストリビューションのexamples\messagesという…

Seamのページパラメーターに日本語を使うと文字化けする場合の対処方法

Seamの便利な機能のひとつとして、ページパラメーターという機能があります。pages.xmlでページパラメーターを指定しておくと、その画面に遷移するときに渡されたHTTPリクエストパラメーターを自動的に処理してBeanにバインドしてくれたり、逆にパラメーター…

JBoss Tools +JBoss AS5.1.0でSeamアプリのホットデプロイを可能にするための方法

JBoss Tools3.1で生成したSeamのWebアプリケーションですが、デフォルトの構成ではJBoss AS5.1.0に対してアクションクラスなどhotフォルダー配下のクラスのインクリメンタルな置換が利きません。(JBoss AS4.2なら大丈夫。)アクションクラスなどを少しでも…

JBoss Toolsでfaceletsのxhtmlエディタの文字エンコード設定?

以下のブログでも記述されているとおり、 http://d.hatena.ne.jp/penguins/20100303/p3 JBossTools3.1(eclipse3.5.2)でもxhtmlファイルでエディタが自動認識するエンコーディングに問題があるようです。 テンプレートのルートとなるファイル(template.xht…

Seamのバイジェクションと一般的なDIの違い

私は長いことSpringで開発してきたので、Seamの@Inや@Outを使ったバイジェクションという考え方に慣れるのが大変でした。 SpringやSeasar2などの一般的なDIとSeamのバイジェクションに違いについては以下の2点が重要だと思います。 1.普通のDIと違いバイジェ…

FaceletsでpageEncodingを指定する方法?

JSPの場合は、 <%@ page pageEncoding="Windows-31J" contentType="text/html;charset=UTF-8" %> のようなディレクティブを指定することで、レスポンスのエンコーディングによらず、ソースファイルのエンコーディングを指定できたのですが、faceletsで同様の…

Faceletsで正しくコメントアウトする方法

SeamやJSF2.0では画面をfaceletsを使って作成することが推奨されます。 JSPであれば、最終的なhtmlのソースに表示したい場合はhtml形式ののコメントを使い、そうでない場合はの形式を使えばよいのですが、faceletsの場合はどうすればよいのでしょうか? http:…