Java EE 6のEL式の強化

JavaEE 6 では、EL式が何気に強化されてます。実は、EL式でメソッドコールができるようになってます。
しんさんの出張所でも紹介されてますが、これが標準で入るのはかなり良い感じ!

例えば、、、http://d.hatena.ne.jp/Hirohiro/20100126/1264507979:title=のエントリで使ったサンプルで使うと、さらにシンプルになりますね。

  • login.xhtmlでこう書いていました。
<h:form>
	ユーザID:<h:inputText value="#{user.name}" />
	<br />
	パスワード:<h:inputSecret value="#{user.password}" />
	<br />
	<h:commandButton value="Login" action="#{loginAction.login()}" />
</h:form>
  • これを以下のように書けるのです。
<h:form>
	ユーザID:<h:inputText value="#{user.name}" />
	<br />
	パスワード:<h:inputSecret value="#{user.password}" />
	<br />
	<h:commandButton value="Login" action="#{loginAction.login(user)}" />
</h:form>
  • LoginAction.javaでは、@ManagedProperty経由でUserインスタンスを受け取る必要がなく、すっきりします。単にメソッド引数にUserを追加しただけです。
package example;

import javax.faces.bean.ManagedBean;

@ManagedBean
public class LoginAction {

	public String login(User user) {
		//ここでログイン処理があると想定
		System.out.println(user.getName());
		System.out.println(user.getPassword());
		
		//ログインOKと想定
		return "/top";
	}
}

これで動きます。