環境識別用のtaglib作成

まずServiceにFormではなくEntityをわたすように修正した。うん。満足。

あと本番環境(product)とテスト環境(ct)のどちらをさわっているかひとめでわかるように区別したいなぁって思った。そりゃURLみりゃわかるけどさ。

で、SeasarにEnvというクラスがあるのをみつけて、taglibつくった。

public class EnvTag extends TagSupport {

	private String mode;

	public String getMode() {
		return mode;
	}

	public void setMode(String mode) {
		this.mode = mode;
	}

	public int doStartTag() throws JspException {
		if (Env.getValue().equals(mode)) {
			return EVAL_BODY_INCLUDE;
		}
		return SKIP_BODY;
	}

}

taglibって、あんまし作ったことないからお作法がよくわからんのよねえ。
使い方は、

<s2:env mode="ct">
  テスト環境のみ有効なHTML
</s2:env>
<s2:env mode="product">
  本番環境のみ有効なHTML
</s2:env>

みたいな感じ。ただ、ここでいうEnvはあくまでSeasarのHOTdeployを有効にするかどうかの設定なんで、テスト環境でもCool Deployしたい場合もあるだろうから、まぁ現場向きではないかな。

ま、ぼくが使えたらそれでいいのです。

追記

env.txtがitかproduct(設定無し)の場合、Seasar2はCOOL deployで動作します。 COOL deployで動作している場合、Javaのクラスの変更をHOTに認識することはできませんが、アプリケーションの起動時にすべてのデプロイを完了させるので、アプリケーションがHOT deployに比べて高速に動作します。

http://sastruts.seasar.org/fileReference.html#env

とあったので、結合テスト(it)環境もCOOLでいけるのね。