2012年2月15日水曜日

Struts2でJSPから静的クラスメソッドを呼び出す!

以前失敗していたJSPから静的メソッドの呼び出しですが、今回再チャレンジを行い成功したのでメモしておきます。

まずは、Struts2は標準ではOGNLからの静的メソッド呼び出しを禁止しているので、これを許可する必要があります。

struts.ognl.allowStaticMethodAccess=true

1行だけのファイル「struts.properties」をクラスパス上に設置します。
Eclipseで開発してる場合は「src」フォルダ直下に配置すればOKです。

次に呼び出しですが

<s:property value="%{@java.io.File@listRoots()}" />

のように指定します。


ここで注意すべき点は「クラス名はパッケージ名で修飾した完全限定名を指定する」必要があることです。ネットで検索するとこの部分が明確になっていないので忘れないようにして下さい。


2011年9月22日木曜日

@OneToManyでFetchType.EAGER

hibernate3.jar
hibernate-jpa-2.0-api-1.0.0.Final.jar

の環境で作業していますが

@OneToMany(fetch = FetchType.EAGER, mappedBy = "hoge")

とすると、

org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags

で例外が発生してしまいました。

一応、JPA2.0でサポートされているようなのですが・・・

結局

@OneToMany(mappedBy = "hoge")
@LazyCollection(LazyCollectionOption.FALSE)

としたところ、例外は吐き出さないようになりましたが・・・